我试图计算字母x和字母o出现在一个字符串中的所有时间,如果它们出现相同的次数,我将返回true,否则返回false。
我已经完成了这个问题,但是当使用三元语句时,它迫使我创建一个我不需要的额外条件,因为你似乎需要在三元语句中进行3次操作,所以我只是计算每次出现的其他内容一个字符串。有没有办法可以在不创建不必要条件的情况下使用三元语句,或者我是否必须使用if语句?
function ExOh(str) {
var ex = 0
var oh = 0
var other = 0
for (var i = 0; i < str.length; i++) {
str[i] === "x" ? ex++ : str[i] === "o" ? oh++ : other++
}
return ex === oh
}
console.log(ExOh("xooabcx$%x73o"));
console.log(ExOh("xooxxo"));
console.log(ExOh("x"));
console.log(ExOh(""));
//wouldn't let me just have one statement after the ternary so I created the other variable.
答案 0 :(得分:2)
为什么不添加布尔值?
ex += str[i] === "x";
oh += str[i] === "o";
实施例
var a = 0;
a += false;
document.write(a + '<br>');
a += true;
document.write(a + '<br>');
&#13;
虽然您只需要区别,但您可以使用单个变量并计算x
,然后计算o
。返回值不是count的值。
function ExOh(str) {
var count = 0, i;
for (i = 0; i < str.length; i++) {
count += str[i] === "x";
count -= str[i] === "o";
}
return !count;
}
document.write(ExOh("xooabcx$%x73o") + '<br>');
document.write(ExOh("xooxxo") + '<br>');
document.write(ExOh("x") + '<br>');
document.write(ExOh("") + '<br>');
&#13;