JavaScript if过滤条件语句不起作用

时间:2019-03-03 02:20:54

标签: javascript function if-statement filter

我无法弄清楚为什么总是获得传递给数组的值并且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)

2 个答案:

答案 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)

相关问题