Javascript - 根据条件在矩阵中查找第一个索引

时间:2017-10-18 11:51:57

标签: javascript search indexof

拥有以下矩阵数组:

[
[0,0,1,1,0,3],
[1,0,0,1,2,5],
[0,0,1,2,4,9]
]

我想找到索引3,它是所有值都大于0(1,1,2)的第一列。

搜索此索引的有效技术是什么?

3 个答案:

答案 0 :(得分:1)

您可以将every方法与findIndex方法结合使用。

findIndex()方法返回数组中第一个元素的index,该元素满足提供的回调测试功能。

every()方法测试array中的所有元素是否通过回调函数通过了测试provided

let matrix=[[0,0,1,1,0,3],[1,0,0,1,2,5],[0,0,1,2,4,9]]
let index = matrix[0].findIndex(function(cell,i){
   return matrix.every(function(row){
    return row[i] > 0; //or return row[i];
   });
});
console.log(index);

或仅使用arrow函数。

let matrix=[[0,0,1,1,0,3],[1,0,0,1,2,5],[0,0,1,2,4,9]]
let index = matrix[0].findIndex((cell,i) => matrix.every(row => row[i] > 0));
console.log(index);

答案 1 :(得分:0)

var arr = [
[0,0,1,1,0,3],
[1,0,0,1,2,5],
[0,0,1,2,4,9]
]

var res = arr.map((a) => a.filter((b) => b > 0))
or
var res = arr[0].filter((b) => b > 0)
console.log(res)

答案 2 :(得分:0)

您可以映射所有真实值并使用Boolean作为回调查找索引。



var array = [[0, 0, 1, 1, 0, 3], [1, 0, 0, 1, 2, 5], [0, 0, 1, 2, 4, 9]],
    index = array
        .reduce((a, b) => a.map((c, i) => b[i] && c))
        .findIndex(Boolean);

console.log(index);