与创建新子阵列相比,更改子阵列何时更新子阵列?[JavaScript]

与创建新子阵列相比,更改子阵列何时更新子阵列?[JavaScript],javascript,arrays,pointers,multidimensional-array,nested,Javascript,Arrays,Pointers,Multidimensional Array,Nested,我有一个[Edit:JavaScript]代码,它使用一个子数组dataSelectedArray,该子数组跟踪我的主数据集mainArray。主数据以数组的形式存储 mainArray = [ [1,2,3],[3,4,2],[5,1,0] ]; dataSelectedArray=[]; for (var i=0; i<dataArray.length; i++) { if ( someLogic ) { dataSelectedArray.push(mainA

我有一个[Edit:JavaScript]代码,它使用一个子数组
dataSelectedArray
,该子数组跟踪我的主数据集
mainArray
。主数据以数组的形式存储

mainArray = [ [1,2,3],[3,4,2],[5,1,0] ];
dataSelectedArray=[];
for (var i=0; i<dataArray.length; i++) {
    if ( someLogic ) {
        dataSelectedArray.push(mainArray[i]);
    }
}
当您这样做时:

dataSelectedArray.push(mainArray[i]);
dataSelectedArray
包含对子数组的引用。这不是对
mainArray
中原始引用来源的位置的引用。因此,重新分配
mainArray[i]
dataSelectedArray
中的值没有影响

这与多个变量引用同一数组时没有什么不同:

var a = [1, 2, 3];
var b = a; // a and b now refer to the same array
b[1] = 6;
console.log(a[1]); // Outputs 6
b = [7, 8, 9]; // b now refers to a different array
console.log(a[1]); // Still 6 -- a hasn't been modified

看起来不像是c#数组这不是c#代码。更新标记或代码(至少应该是可编译的)。这是C#,使用来自JS的数据。我一直在这两者之间转换,所以我的对象来自一个JavaScript数组,它解释了格式。@user203212546
这是C不,它不是…它现在不是有效的C代码。考虑清理代码,否则你的问题唯一有效的答案是,代码不按原样工作,因为它不是首先编译的。哦,这是有道理的。非常感谢。您知道更新子数组值的更好(更短?)方法,而不是单独分配每个值吗?不,我不知道更短的方法。定义一个函数,然后您可以执行
替换_数组(mainArray[index],updateArray[index])