Javascript 如何检查是否存在';数组中有一个数组吗?

Javascript 如何检查是否存在';数组中有一个数组吗?,javascript,arrays,Javascript,Arrays,问题 我想测试数组中是否存在数组。例如,如果我的数组是: let arr = ["all", ['>', 'PSF', 10]] 我想让这样的东西起作用: let segment = ['>', 'PSF', 10] arr.indexOf(segment) // would be equal to 1, in this case 实际发生的情况 arr.indexOf(segment)目前是-1,因为我相信JavaScript[]!=[]由于它检查阵列内存位置的方式 无论如何,

问题

我想测试数组中是否存在数组。例如,如果我的数组是:

let arr = ["all", ['>', 'PSF', 10]]
我想让这样的东西起作用:

let segment = ['>', 'PSF', 10]
arr.indexOf(segment) // would be equal to 1, in this case
实际发生的情况

arr.indexOf(segment)目前是-1,因为我相信JavaScript
[]!=[]
由于它检查阵列内存位置的方式

无论如何,建议采用什么方法测试阵列中当前是否存在特定阵列?我也尝试了.includes(),但它的工作方式似乎与indexOf的工作方式相同(所以失败了)


任何帮助都将不胜感激。

您首先需要创建一个比较两个阵列的函数(实现将取决于您的需要),例如:

const compareArrays = (a1, a2) => Array.isArray(a1) && Array.isArray(a2) && a1.length === a2.length && a1.every((v, i) => v === a2[i])
您将需要定义此函数,因为您的数组
,可能更复杂(即包含其他数组)

然后使用
some
检查原始数组是否包含该数组(
segment
):

findIndex
,以获取匹配数组的索引(如果不存在匹配数组,则为-1)


小心,如果任何
元素
(或
)为
null
未定义
,则会引发此错误,但如何从中获取索引值?我希望能够看到匹配数组在我正在搜索的数组中的位置在本例中使用,
findIndex
而不是
some
@LGSon,我在回答中已经提到了这一点。(需要根据数组内容更新
comparararray
)请参阅,以了解如何比较两个数组中的相等元素。
arr.some(element => compareArrays(segment, element) )
arr.findIndex(element => compareArrays(segment, element) )