javascript - 如何设置数组中推送对象的属性?

标签 javascript jquery arrays json

我有一个对象。

{
    "header": [{        
        "items": []
    }]
}

var jObj = jQuery.parseJSON('{"header":[{"items":[]}]}');

我将一个对象插入项目

var align = jQuery.parseJSON('{"align":""}');
jObj["header"][0].items.push(align);
jObj["header"][0].items.push(align);

我设置了值

jObj["header"][0].items[0].align = "right";
jObj["header"][0].items[1].align = "left";

console.log(JSON.stringify(jObj));

我的两个对齐得到相同的值,如何设置这些值?

输出

{"header":[{"items":[{"align":"left"},{"align":"left"}]}]}

这似乎有效,但我需要动态地进行。

var jObj = jQuery.parseJSON('{"header":[{"items":[{"align":""},{"align":""}]}]}');

最佳答案

您正在推送引用...其中一个的任何更改都会反射(reflect)在另一个中。试试Object.assign({}, align)反而。它将创建一个不引用该对象的副本。

var jObj = {
    "header": [{        
        "items": []
    }]
}

var align = {"align": ""};
jObj["header"][0].items.push(Object.assign({}, align));
jObj["header"][0].items.push(Object.assign({}, align));

jObj["header"][0].items[0].align = "right";
jObj["header"][0].items[1].align = "left";

console.log(jObj);

PD:Js将json视为数组,因此不需要解析。

关于javascript - 如何设置数组中推送对象的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51714743/

相关文章:

javascript - 如何从网络共享在网页中显示 pdf

python 和 NumPy : sum of an array slice

javascript - 无法将文本附加到 d3.js 强制布局节点

javascript - Node.js 中 sqlite 数据库的异步 HTTP 请求

javascript - 验证是否确实加载了动态创建的 CSS

使用 coldfusion 的 jquery 可排序更新数据库

使用 jquery-ui-1.10.1.custom.js 时未定义 jQuery :

javascript - 如何检测数组中的元素是否为一个字符长并且与另一个数组中的任何元素的第一个字符匹配

java - 字符串到 JSONArray 颠倒顺序

javascript - 设置默认颜色而不弄乱页面