我无法弄清楚为什么总是获得传递给数组的值并且if语句不起作用?
期望的输出是“橙色”,但是我需要将两个字符串变量传递给该函数,并具有一个if语句以返回true或false。无论我为将测试传递到elementOne并针对elementTwo进行检查而付出了什么,我都得到了elementOne的值,我无法使输出= false。
此代码不得从下面的数组和函数调用中更改。
var fruit = ["Apple", "Orange", "Strawberry"];
var elementTwo = "Apple"
function favoriteFruit(elementOne, elementTwo) {
if (elementOne === elementTwo)
return true;
else
return false;
}
const result = fruit.filter((elem) => {
return favoriteFruit("Apple", elementTwo);
});
console.log (result)
答案 0 :(得分:1)
var fruit = ["Apple", "Orange", "Strawberry"];
function favoriteFruit(elementOne, elementTwo) {
return elementOne === elementTwo;
}
const result = fruit.filter((elem) => {
return favoriteFruit("Orange", elem);
});
输出:如果["Orange"]
为“橙色”,则为elementOne
;如果[]
不是给定数组中的值,则为elementOne
。
如果需要返回布尔值,请使用以下命令:
...
const result = !!fruit.filter((elem) => {
return favoriteFruit("Apple", elem);
}).length;
更新:
如果您需要检查给定的elementTwo,则:
var fruit = ["Apple", "Orange", "Strawberry"];
var elementTwo = "Apple";
function favoriteFruit(needle, checkAgainst) {
return needle === checkAgainst;
}
const result = fruit.filter((elem) => {
return favoriteFruit(elem, elementTwo);
});
console.log(result);
答案 1 :(得分:1)
您只是检查"apple"
和"apple"
,它们将始终执行为true。您需要将return favoriteFruit("Apple", elementTwo);
替换为return favoriteFruit(elem, elementTwo);
。以下代码段适合您。
注意:我还在if / else语句之后添加了大括号。尽管没有必要(如果没有括号,它仍然可以使用),但是包括它们仍然是一种好习惯。
例如,
if (true)
//action
与
是同一件事if (true) {
//action
}
但是
if (true)
//action1
//action2
与
是同一件事if (true) {
//action1
}
//action2
TL; DR:始终在if / else语句后使用大括号。
更新:我刚刚意识到您可以完全摆脱if语句。在您的if语句中,如果elementOne == elementTwo
为true,则返回true。如果elementOne == elementTwo
为false,则返回false。看到图案了吗?
您可以简单地返回elementOne == elementTwo
,这与您所做的相同。
var fruit = ["Apple", "Orange", "Strawberry"];
var elementTwo = "Apple"
function favoriteFruit(elementOne, elementTwo) {
return elementOne == elementTwo
}
const result = fruit.filter((elem) => {
return favoriteFruit(elem, elementTwo);
});
console.log(result)