Javascript:在数组中设置一个值会将所有其他值设置为该值

标签 javascript arrays

当我尝试在 JavaScript 中设置数组中的值时,所有其他“相邻”值也会发生变化。

var screenData = [];
function init() {
    var properties = { "property": "value" }
    for( i = 0; i < 35; i++ ) {
        var row = [];
        for( j = 0; j < 19; j++ ) {
            row.push(properties);
        }
        screenData.push(row);
    }
}
init();
screenData[0][0].property = "othervalue";
alert(screenData[0][1].property);

警报将返回 othervalue,尽管它应该是 value :(

我刚刚监督了某些事情还是这是一个错误?

如有任何帮助,我们将不胜感激:3

最佳答案

这是因为您引用相同的对象(properties),因此每次修改property时,它都会在各处更新。

function init() {
    for( i = 0; i < 35; i++ ) {
        var row = [];
        for( j = 0; j < 19; j++ ) {
            row.push({ property: 'value' });
        }
        screenData.push(row);
    }
}

关于Javascript:在数组中设置一个值会将所有其他值设置为该值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25826981/

相关文章:

javascript - 有没有可以帮助配置结构化字符串的软件?

arrays - Julia 函数返回的值比预期错误

c - C 语言中的二维数组旋转 90

javascript - 无法将数据从 Sammy 传递到 knockout 模板

javascript - 分配给变量的函数返回未定义

javascript - 如何获取未选中单选按钮旁边的输入文本值?

javascript - 在用文本填充某些字段时启用提交按钮

javascript - 从javascript中的两个单独的对象数组中过滤具有相同id的对象

arrays - 如何快速将两个最大的数组元素相乘

ios - 名称为一半字符串和一半变量的调用数组 : Dynamic References