我正在研究一个简单的函数,该函数应该使用for循环返回与我的条件匹配的数组的第一个元素。它会不断返回数组的第一个元素,无论它是否符合设置标准。知道bug在哪里吗?我也试过.find()方法,同样的问题。
function wheresTheBeef(array) {
for (var i = 0; i < array.length; i++) {
if (array[i] == 'fillet' || 'strip' || 'sirloin') {
return array[i];
}
else {
return 'there is no beef!'
}
}
}
答案 0 :(得分:1)
您的情况不正确,请更改:
if (array[i] == 'fillet' || 'strip' || 'sirloin') {
这个:
if (array[i] == 'fillet' || array[i] == 'strip' || array[i] == 'sirloin') {
改变的原因:
let var1="something";
if (var1) {
console.log("var1 has a truthy value");
}
if (1==0 || "something") {
console.log("condition is true");
}
&#13;
答案 1 :(得分:1)
您需要使用字符串测试每个元素,因为每个非空字符串都是truthy。
if (array[i] === 'fillet' || array[i] === 'strip' || array[i] === 'sirloin') {
几乎相同
found = array.find(item => ['fillet', 'strip', 'sirloin'].includes(item));
答案 2 :(得分:0)
所以你只需要摆脱第二个return语句(和else)。只要你return
,执行就会停止。因此,如果您永远不会返回,循环将继续,直到满意为止。
如果您仍然需要there is no beef
语句,则可以将其置于循环之外。如果循环执行且永远不满足条件,那么它将继续返回该语句。
答案 3 :(得分:0)
这里有 2个问题。
您的检查是否有误,因为array[i] == 'fillet' || 'strip' || 'sirloin'
始终 TRUE
你不应该直接在else分支中返回,否则你的代码逻辑只检查第一个元素
function wheresTheBeef(array) {
for (var i = 0; i < array.length; i++) {
if (array[i] == 'fillet' || array[i] == 'strip' || array[i] == 'sirloin') {
return array[i];
}
else {
continue
}
}
return "there is no beef"
}
&#13;