如何查看数组中是否有数组?

时间:2018-05-01 21:18:59

标签: 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 [] != [],因为它检查数组内存的位置。

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

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:3)

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

const compareArrays = (a1, a2) => Array.isArray(a1) && Array.isArray(a2) && a1.length === a2.length && a1.every((v, i) => v === a2[i])

您需要定义此函数,因为您的数组segment可能更复杂,(即包含其他数组)

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

arr.some(element => compareArrays(segment, element) )

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

arr.findIndex(element => compareArrays(segment, element) )