我有两个对象数组。 arrayOne
包含项目类型myObject1
:
var myObject1 = {
Id: 1, //key
params: { weight: 52, price: 100 },
name: "",
role: ""
};
arrayTwo
包含myObject2
的项目类型:
var myObject2 = {
Id: 1, //key
name: "real name",
role: "real role"
};
我想将所有names
和roles
从arrayTwo
复制到arrayOne
。
id
是关键,两个数组都包含myObjects
,其中包含'id`。
答案 0 :(得分:2)
如果保证两个数组是一致的,那么使用jQuery.extend()
,代码是微不足道的:
$.each(arrayOne, function(i, obj) {
$.extend(obj, arrayTwo[i]);
});
答案 1 :(得分:1)
以线性时间运行的解决方案。
var arrayOne; // Array containing objects of type myObject1
var arrayTwo; // Array containing objects of type myObject2
var tempObj = {};
// Transform arrayOne to help achieve a better performing code
arrayOne.forEach(function(obj){
tempObj[obj.id] = obj;
});
// Runs on linear time O(arrayTwo.length)
arrayTwo.forEach(function(obj){
// Note, since I'm not adding any thing to the arrayTwo
// I can modify it in this scope
var match = tempObj[obj.id];
if(match){
// If a match is found
obj.name = match.name;
obj.role = match.role;
}
});