我有两个数组,我想从array1扩展array2来获取 “值”。
但是,extend也会覆盖另一个对象,从而创建一个副本。
var array1 = [{
attributeId: 2,
attributeName: "ToolOutput",
values: [
"tool output value"
]
}, {
attributeId: 4,
attributeName: "AggregationLevel",
values: [
"aggregation level value"
]
}];
var array2 = [{
attributeId: 1,
attributeName: "DataToolsUsage",
values: []
}, {
attributeId: 2,
attributeName: "ToolOutput",
values: []
}, {
attributeId: 3,
attributeName: "ConnectedTo",
values: []
}, {
attributeId: 4,
attributeName: "AggregationLevel",
values: []
}];
var newArray = $.extend({},array2, array1);
var printed = "result[0] is : <br> " + JSON.stringify(newArray[0]);
printed = printed + "<br><br> result[1] is : <br> " + JSON.stringify(newArray[1])
printed = printed + "<br><br> result[2] is : <br> " + JSON.stringify(newArray[2])
printed = printed + "<br><br> result[3] is : <br> " + JSON.stringify(newArray[3])
document.write(printed);
您可以在结果中看到两个“AggregationLevel”对象。并删除“DataToolsUsage”
有什么想法吗?
答案 0 :(得分:0)
你需要像这样$.extend({}, array1, array2)
调用extend。第一个空对象是要存储扩展array1和array2结果的目标对象。如果未提供目标参数,则array1将被视为目标对象,因此会覆盖这些值。有关扩展的详细信息,请参阅https://api.jquery.com/jquery.extend/。
答案 1 :(得分:0)
$.extend
不适合这样的任务。您有两个对象的数组,其中包含一些自定义标识符字段。因此,如果要合并数组,则应迭代其所有项并手动填充结果数组。使用像underscore
这样的库可以更轻松地完成它,但根本没有必要。