我正在尝试在 JavaScript 中创建一个 3D 矩阵,然后我想通过使用其坐标来更新其值:
var xAxis = [];
var yAxis = [];
var ZAxis = [];
var dimensions = 4;
//initalize matrix
for (var i=0;i<dimensions;i++){
xAxis.push(0);
}
for (var j=0;j<dimensions;j++){
yAxis.push(xAxis);
}
for (var k=0;k<dimensions;k++){
matrix.push(yAxis);
}
//check value of one point in the matrix
matrix[1][2][3]; //returns 0 as expected
//update value of matrix using same coordinates
matrix[1][2][3] = 2;
当我运行最后一步时,它不仅会更新我的预期 1 [2][3] 坐标,但它还会将每个数组的每第三个值更新为 2,如下图所示:
我怎样才能只更新我想要的值?我的意思是,数字 2 应该只在一个坐标点上,在本例中 1 [2][3]。
注意: 我认为它有一些事情要做,它可能会将原始数组分配到矩阵中而不是它们自己的新副本,所以当我更新一个坐标时,我实际上是在更新原始数组,而其他数组只是指向原创,所以这就是为什么它也被反射(reflect)在那里?
最佳答案
您可以通过引用推送数组。
考虑以这种方式创建矩阵:
var matrix = [0, 1, 2, 3].map(function() {
return new Array(4).fill().map(function(){
return new Array(4).fill(0);
});
});
关于javascript - 使用 javascript 中的坐标更新 3d 矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36781222/