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

Javascript - Find first index in a matrix based on condition

具有以下矩阵数组:

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

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

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

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)

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

findIndex()方法returns数组中第一个元素的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);

您可以映射所有真值并使用 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);