javascript - 将多级对象文字插入数组时,值困惑

标签 javascript jquery object multidimensional-array literals

我有一个具有多个级别的 json 对象,我们将其称为 ZOO。

var ZOO = {
            info: {
                cages: {
                    amount: 5,
                    size: { x: 1, y: 0.2 },
                    additionals: 'a broken bucket',
                },
            },
        }, myZoos = [];

现在我想克隆并更改此对象,然后将其添加到名为 myZoos 的数组中。

window.JSON.clone = function (json) {
    return $.extend({}, json);
};
for (var a = 1; a <= 3; a++) {
            var newZoo = JSON.clone(ZOO);
            newZoo.info.cages.size = { x: (a * 5), y: (a * 2) };
            myZoos.push(newZoo);
        }

让我们读取填充的数组并检查随机大小值!

for (var b = 0; b < myZoos.length; b++) {
            var myZoo = myZoos[b];
            console.log(myZoo.info.cages.size);
        }

结果:

Object { x: 15, y: 6 }
Object { x: 15, y: 6 }
Object { x: 15, y: 6 }

看起来我只获得了推送到数组的最后一个值!
为什么只返回数组中的最后一项?

最佳答案

需要使用.extend() method的深拷贝参数

window.JSON.clone = function (json) {
    return $.extend(true, {}, json);
};

关于javascript - 将多级对象文字插入数组时,值困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25025629/

相关文章:

javascript - 我可以在 d3 中加载 .gml 吗?

javascript - 由于 css 树,无法添加或删除类。 JQuery 中的所有内容{单击并悬停)

javascript - JQuery - 将表单数据序列化为关联数组

python - 有没有办法对 Pandas 数据框中的一组重复项进行编号?

Python,可变对象作为默认参数,有什么办法解决吗?

javascript - 允许用户在文本框中以 dd/mm/yyyy 格式插入日期

javascript - jquery .append() 工作然后消失?

Jquery 点击事件未触发/区分两个相同的 HTML block

Django 中需要为特定元素而不是整个页面重新加载 JavaScript 函数

javascript - 尝试向 javascript 对象添加字段