JavaScript如果数组包含名称,那么就不要这样做

时间:2016-04-24 16:55:02

标签: javascript

所以我有这段代码:

if(item.name != "Banana" || "Apple"){
console.log("Good job");
} else{
console.log("Mad");
}

基本上,该部分不起作用!=它仍然与这些名称一致。不要忽视它们。

2 个答案:

答案 0 :(得分:4)

var fruits = ["Banana", "Apple"];
if( fruits.indexOf(item.name) != -1 ){
    console.log("name is banana or apple")
} else {
    console.log("name is neither banana nor apple")
}

这就是你要找的东西吗?

反正

if(item.name != "Banana" || "Apple")

这段代码将永远评估" Banana"在" Apple"因为or运算符使用第一个不是假的参数。 "香蕉"被评估为真,那么if条件将始终是

if (item.name != "Banana")

答案 1 :(得分:0)

只是为了抛出另一个选项,你可以通过使用更高阶函数来过滤数组,在本例中是内置数组的filter函数:

var withoutApplesAndBanans = myArray.filter( function(item) { 
     return item.name !== 'Apple' && item.name !== 'Banana'; 
} );

您还可以构建一个“禁止”单词数组,并使用它而不是硬比较:

var forbiddenWords = ['Apple, 'Banana'];

var withoutApplesAndBanans = myArray.filter( item => forbiddenWords.indexOf(item.name) === -1 ) ;