Javascript - 检查数组

时间:2017-01-21 17:20:33

标签: javascript arrays

在Javascript中,我如何确保年龄数组 年龄1018而不只是一个。

var ages = [3, 10, 18, 20];
ages.filter(age => age === 10 || age === 18); // returns 10 and 18
ages.filter(age => age === 10 && age === 18); // returns null

&&无法确保两者都存在,因为它返回null。我知道我可以使用2个不同的ages.find/filter并检查合并结果,但我想知道是否有更优雅的方式在单个语句中执行此操作。

为了澄清,在ages数组中,如果我检查10(存在)和21(不存在),则应返回null或{ {1}},因为其中一个不存在。

1 个答案:

答案 0 :(得分:4)

您必须使用includes功能:



var ages = [3, 10, 18, 20];
console.log(ages.includes(10) && ages.includes(18));




另一种方法是使用indexOf方法:

  

arr.indexOf(searchElement)

     

arr.indexOf(searchElement,fromIndex)



var ages = [3, 10, 18, 20];
console.log(ages.indexOf(10)!=-1 && ages.indexOf(18)!=-1);




findIndex是您可以使用的另一种方法。它的行为类似于indexOf,但存在一些差异:

Array.prototype.indexOf()期望一个值作为参数。这对于基本类型的数组很有用,例如NumberStringBoolean

Array.prototype.findIndex()有一个回调函数作为第一个参数。当你有多个对象时,这非常有用。



var ages = [3, 10, 18, 20];
var bool=ages.findIndex(a=>a==10)!=-1 && ages.findIndex(a=>a==18)!=-1;
console.log(bool);