我有一个类似于以下内容的数组:
const myArray: number[][] = [[1,2,3],[4,5,6]]
我想获取特定元素的索引。通过简单的一维数组,我可以使用[1,2,3].indexOf(1)
,它返回0
。但这不适用于我的情况。
答案 0 :(得分:1)
您可以收集所需值的数组的所有索引。
const
findIndex = (array, value) => {
if (!Array.isArray(array)) return;
let i = array.indexOf(value),
temp;
if (i !== -1) return [i];
i = array.findIndex(v => temp = findIndex(v, value));
if (i !== -1) return [i, ...temp];
},
data = [[1, 2, 3], [4, 5, 6]];
console.log(findIndex(data, 1));
console.log(findIndex(data, 5));
答案 1 :(得分:0)
您不能像这样在2D数组上直接使用indexOf,因为它使用严格的相等性,并尝试将目标值与外部元素(即数组)匹配,所以您总是获得-1。
您可以使用findIndex并包含这样的内容
const myArray = [[1,2,3],[4,5,6]]
let indexFinder = (arr,target) => {
return arr.findIndex(v=> v.includes(target))
}
console.log(indexFinder(myArray,1))
console.log(indexFinder(myArray,6))