在 Javascript 中,如何确保年龄数组具有两个年龄 10
和18
而且不止一个。
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
或false
,因为其中之一不存在。
最佳答案
您必须使用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()需要一个值作为参数。这对于基本类型的数组非常有用,例如 Number
、String
、Boolean
。
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);
关于Javascript - 检查数组中是否存在 2 个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41782252/