拥有以下矩阵数组:
[
[0,0,1,1,0,3],
[1,0,0,1,2,5],
[0,0,1,2,4,9]
]
我想找到索引3,它是所有值都大于0(1,1,2)的第一列。
搜索此索引的有效技术是什么?
答案 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);