我想检查给定2D数组的元素在具有相同下标或索引的索引处是否具有相等的值。
例如,给定一个数组;
var arr = [[1,0,1],[1,1,1],[1,1,0]]
对于相同的索引arr[0][0]
,arr[1][0]
,arr[2][0]
和0
相等。
类似地,我想检查其他所有具有相同“行”或相同“列”(或两者)的元素。我该如何实现?
我尝试遍历数组,检查三个连续的元素,但由于循环中的所有元素都不存在后继元素,因此它返回TypeError
。
这就是我在做的,假设有一个3x3
数组;
var arr = [[1,0,1],[1,1,1],[1,1,0]];
for (let i = 0; i < 3; i++) {
for (let j = 0; j < 3; j++) {
if ((arr[i][j] == arr[i - 1][j] == arr[i - 2][j]) == 1) {
//do something
}
}
}
输出:
"message": "TypeError: arr[(i - 1)] is undefined",
"filename": "https://stacksnippets.net/js",
"lineno": 16,
"colno": 9
答案 0 :(得分:0)
您可以进行两个嵌套循环,并检查相同的行或列是否包含相同的值。
var array = [[1, 0, 1], [1, 1, 1], [1, 1, 0]],
cols = array.map((a, i, outer) => a.every((v, j) => outer[0][j] === v)),
rows = array.map((a, i) => a.every((v, j, inner) => inner[0] === v));
array.forEach(a => console.log(...a));
console.log('cols', ...cols);
console.log('rows', ...rows);