array.includes返回false,其中搜索名称在数组中

use*_*442 3 javascript

简要说明:如果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);
Run Code Online (Sandbox Code Playgroud)
<p id="demo"></p>
Run Code Online (Sandbox Code Playgroud)

Nic*_*ons 5

您的问题是您有一个多维数组,并且数组includes将不搜索内部数组。因此,您需要先对数组进行展平,然后再进行搜索。在这里Infinity,如果您的数组具有的维数不只是2个维,那么我用作参数:

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

console.log(c); // true;
Run Code Online (Sandbox Code Playgroud)

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