在打字稿中找到多维数组中的索引

时间:2020-07-02 07:59:47

标签: javascript typescript

我有一个类似于以下内容的数组:

const myArray: number[][] = [[1,2,3],[4,5,6]]

我想获取特定元素的索引。通过简单的一维数组,我可以使用[1,2,3].indexOf(1),它返回0。但这不适用于我的情况。

2 个答案:

答案 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))