首页 > 解决方案 > array.includes 返回 false ,其中搜索的名称在数组中

问题描述

如果var c = familyArray.includes("Bart");它会返回false ,但如果var c = familyArray.includes("Homer");它会返回true

我希望它也是如此,Bart因为它也包含在数组中。

下面是我的数组:

var familyArray = ["Marge", "Homer", ["Bart", "Lisa", "Maggie"]];
var a = familyArray.indexOf("Bart");
var b = familyArray[2][0];
var c = familyArray.includes("Bart");

document.getElementById("demo").innerHTML = c;

console.log(a);
console.log(b);
<p id="demo"></p>

标签: javascript

解决方案


您的问题是您有一个多维数组,并且数组includes不会搜索内部数组。因此,您需要在搜索之前将数组展平。Infinity在这里,如果您的数组的维数多于 2,我将其用作参数:

var familyArray = ["Marge", "Homer", ["Bart", "Lisa", "Maggie"]];
var c = familyArray.flat(Infinity).includes("Bart");

console.log(c); // true;

请参阅.flat() 此处的浏览器支持。如果您需要更好的浏览器支持,您可以使用此处找到的替代方法


推荐阅读