![](/img/trans.png)
[英]How to Merge two array of objects based on same key and value in javascript?
[英]How to merge two Javascript objects by key value
我需要通過其鍵值映射合並兩個Javascript對象。
這是我的第一個Javascript對象
var json1= [
{ ID: 1, limit: 5, name: "foo" },
{ ID: 2, limit: 9, name: "dog" }
];
這是我的第二個Javascript對象
var json2 = [
{ ID: 2, validate: false, LastRunTime: "February" },
{ ID: 1, validate: true, LastRunTime: "January" }
];
$.extend(true, {}, json1, json2);
這給了我這樣的結果Javascript
[
{
{
ID: 2,
LastRunTime: "February",
limit: 5,
name: "foo",
validate: false
},
{
ID: 1,
LastRunTime: "January",
limit: 9,
name: "dog",
validate: true
}
}
]
但我正在尋找將ID映射為鍵的代碼,然后合並這樣的Javascript對象,而不管它們在數組中的順序如何。
[
{
{
ID: 1,
LastRunTime: "January",
limit: 5,
name: "foo",
validate: true
},
{
ID: 2,
LastRunTime: "February",
limit: 9,
name: "dog",
validate: false
}
}
]
您需要切換數據表示。 最好的方法是將你的json存儲為:
var json1 = {
"1": { ID: 1, limit: 5, name: "foo" },
"2": { ID: 2, limit: 9, name: "dog" }
};
如果不可能,那么您可以動態轉換數據:
var json1obj = {};
json1.forEach(function(obj) {
json1obj[obj.ID] = obj;
});
var json2obj = ...;
$.extend(true, {}, json1obj, json2obj);
var result = [];
for (var i = 0; i < json1.length; i++) {
var found = false;
for (var j = 0; j < json2.length; j++) {
if (json1[i].ID == json2[j].ID) {
result.push($.extend(true, {}, json1[i], json2[j]));
found = true;
break;
}
}
if (!found) {
// If no match found in json2, put a copy in the result
result.push($.extend(true, {}, json1[i]));
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.