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);
具有以下矩阵数组:
[
[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);