检查2D数组的元素在相等索引处是否具有相等的值

时间:2019-03-06 21:20:00

标签: javascript arrays

我想检查给定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

1 个答案:

答案 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);