我有一个类似于下面的示例对象的对象。
var obj = {
id : "",
entries: [
{
url : "some url",
response : {a response object}
},
{
url : "another url",
response : {a response object}
}
]
};
在上面的对象中,我有一个entries
元素,它是一个对象数组。 entries
元素中的每个对象都有一个'url'属性和一个'response'属性,它是一个对象。
在对象中,条目中可能缺少响应属性。在这种情况下,我在变量'tempObj'中有一个默认的响应对象,我将这个tempObj分配给'entries'元素。
var tempObj = {
status : 200
statusText : "Success"
};
obj.entries[1]["response"] = tempObj;
问题是当obj
中缺少多个响应元素时,它会为第一个丢失的entries
正确添加响应元素,但对于第二个entries
,它会添加对添加了第一个元素。
我还需要在第二个元素中添加确切的值。我怎么能这样做?
这是在nodejs应用程序中(不是客户端javascript)。
答案 0 :(得分:0)
只需遍历entries
数组,并在必要时进行更新。例如:
var tempObj = {
status : 200,
statusText : "Success"
};
obj.entries.forEach(function(item){
item.response = item.response || tempObj;
});
如果您需要默认响应对每个项目都是唯一的,那么只需使用您喜欢的克隆方法,并将其应用于分配行。例如,见这里:What is the most efficient way to deep clone an object in JavaScript?
更新:当我需要进行克隆,或任何常见的事情但是扩展常规js时,我通常会转向lodash。您可以使用此库轻松克隆,它可以在node.js和前端客户端上运行。要克隆你会做类似的事情:
item.response = item.response || _.assign({}, tempObj);