根据数组元素更新矩阵

时间:2016-04-22 00:56:55

标签: javascript arrays matrix

我知道问题的标题似乎有点奇怪,但我正在寻找的答案是关于这个标题。假设我有数组数组,并希望根据另一个数组元素更新它。例如;

数组数组;

var arrayOfArrays =    [
                            [
                                [false, false, false, false],
                                [false, false, false, false],
                                [false, false, false, false],
                                [false, false, false, false],
                                [false, false, false, false],
                                [false, false, false, false],
                                [false, false, false, false],
                                [false, false, false, false],
                                [false, false, false, false],
                                [false, false, false, false],
                                [false, false, false, false],
                                [false, false, false, false],
                                [false, false, false, false],
                                [false, false, false, false],
                                [false, false, false, false],
                                [false, false, false, false],
                                [false, false, false, false],
                                [false, false, false, false],
                                [false, false, false, false],
                                [false, false, false, false],
                                [false, false, false, false],
                                [false, false, false, false],
                                [false, false, false, false],
                                [false, false, false, false],
                            ],
                            [
                                [false, false, false, false],
                                [false, false, false, false],
                                [false, false, false, false],
                                [false, false, false, false],
                                [false, false, false, false],
                                [false, false, false, false],
                                [false, false, false, false],
                                [false, false, false, false],
                                [false, false, false, false],
                                [false, false, false, false],
                                [false, false, false, false],
                                [false, false, false, false],
                                [false, false, false, false],
                                [false, false, false, false],
                                [false, false, false, false],
                                [false, false, false, false],
                                [false, false, false, false],
                                [false, false, false, false],
                                [false, false, false, false],
                                [false, false, false, false],
                                [false, false, false, false],
                                [false, false, false, false],
                                [false, false, false, false],
                                [false, false, false, false],
                            ]

    ]

我有另一个像

这样的数组
var elementArray = ["0-7-3","2-10-0","2-11-0","2-12-1"]

是否有任何快捷方式可以根据第二个数组中的元素更新数组数组,例如将第0个数组第3列的更新第7列更新为true。 任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

您可以拆分索引并在大型数组上使用它。

var elementArray = ["0-7-3","2-10-0","2-11-0","2-12-1"];
for(var i = 0; i < elementArray.length; i++){
  var idx = elementArray[i].split('-');
  arrayOfArrays[idx[0]][idx[1]][idx[2]] = true;
}

答案 1 :(得分:1)

我不是第一个答案,而且IrkenInvader几乎完全相同,我的内容中只有一些错误检查,这在您的示例中是必需的。

&#13;
&#13;
var arrayOfArrays = [
  [
    [false, false, false, false],
    [false, false, false, false],
    [false, false, false, false],
    [false, false, false, false],
    [false, false, false, false],
    [false, false, false, false],
    [false, false, false, false],
    [false, false, false, false],
    [false, false, false, false],
    [false, false, false, false],
    [false, false, false, false],
    [false, false, false, false],
    [false, false, false, false],
    [false, false, false, false],
    [false, false, false, false],
    [false, false, false, false],
    [false, false, false, false],
    [false, false, false, false],
    [false, false, false, false],
    [false, false, false, false],
    [false, false, false, false],
    [false, false, false, false],
    [false, false, false, false],
    [false, false, false, false],
  ],
  [
    [false, false, false, false],
    [false, false, false, false],
    [false, false, false, false],
    [false, false, false, false],
    [false, false, false, false],
    [false, false, false, false],
    [false, false, false, false],
    [false, false, false, false],
    [false, false, false, false],
    [false, false, false, false],
    [false, false, false, false],
    [false, false, false, false],
    [false, false, false, false],
    [false, false, false, false],
    [false, false, false, false],
    [false, false, false, false],
    [false, false, false, false],
    [false, false, false, false],
    [false, false, false, false],
    [false, false, false, false],
    [false, false, false, false],
    [false, false, false, false],
    [false, false, false, false],
    [false, false, false, false],
  ]
];
var elementArray = ["0-7-3", "2-10-0", "2-11-0", "2-12-1"];
for (var i = 0; i < elementArray.length; i++) {
  var keys = elementArray[i].split('-');
  if (keys.length == 3 &&
    typeof arrayOfArrays[keys[0]] != 'undefined' &&
    typeof arrayOfArrays[keys[0]][keys[1]] != 'undefined' &&
    typeof arrayOfArrays[keys[0]][keys[1]][keys[2]] != 'undefined'
  ) {
    arrayOfArrays[keys[0]][keys[1]][keys[2]] = true;
  }
}
console.log(arrayOfArrays);
&#13;
&#13;
&#13;

小提琴: https://jsfiddle.net/trex005/kzbq9xL0/1

如果要切换而不是始终将元素更改为true,请更改

arrayOfArrays[keys[0]][keys[1]][keys[2]] = true;

arrayOfArrays[keys[0]][keys[1]][keys[2]] = !arrayOfArrays[keys[0]][keys[1]][keys[2]];
相关问题