我有两个对象,第一个:
prods = [
{
'id':1,
'category_ID' : 26,
'name':'prod1',
'descripcion' : 'sadasdsad',
},
{
'id':2,
'category_ID' : 26,
'name':'prod2',
'descripcion' : '21312d',
},
{
'id':3,
'category_ID' : 6,
'name':'prod3',
'descripcion' : 'ergrd',
},
{
'id':4,
'category_ID' : 12,
'name':'prod4',
'descripcion' : 'wwwwwwww',
}
]
第二个,其元素随机排序
orders = [
{
'id':2,
'category_ID' : 26,
'name':'producto2',
'descripcion' : '21312d',
'units': 1,
'isSelected' : 1
},
{
'id':4,
'category_ID' : 12,
'name':'producto4',
'descripcion' : 'wwwwwwww',
'units': 21,
'isSelected' : 1
},
{
'id':1,
'category_ID' : 26,
'name':'producto1',
'descripcion' : 'sadasdsad',
'units': 34,
'isSelected' : 1
}
]
我试图用第二个匹配的id&更新第一个对象的元素并添加新的propierties,结果将是
prods = [
{
'id':1,
'category_ID' : 26,
'name':'prod1',
'descripcion' : 'sadasdsad',
'units': 34,
'isSelected' : 1
},
{
'id':2,
'category_ID' : 26,
'name':'prod2',
'descripcion' : '21312d',
'units': 1,
'isSelected' : 1
},
{
'id':3,
'category_ID' : 6,
'name':'prod3',
'descripcion' : 'ergrd',
},
{
'id':4,
'category_ID' : 12,
'name':'prod4',
'descripcion' : 'wwwwwwww',
'units': 21,
'isSelected' : 1
}
]
我在一个循环的海洋中晕眩......没有结果......任何线索?
答案 0 :(得分:4)
尝试这样的事情:
function merge(products, orders){
for(var i = 0; i < products.length; i++){
var prod = products[i];
for(var j = 0; j < orders.length; j++){
var order = orders[j];
if(order.id == prod.id){
for(var key in order){
prod[key] = order[key];
}
}
}
}
}
然后您可以使用这样的功能;
merge(prods, orders);
答案 1 :(得分:0)
如果您不介意使用jquery,可以执行以下操作:
// Go through prods (destination) array
var prods = $.grep(prods, function( prod ) {
// Go through orders (source) array
var result = $.grep(orders, function(order){
// Match id on both arrays, if same extend ( copy over ) object
if (order.id === prod.id) {
$.extend(prod, order);
// Returning true keeps this item in the array ( If nothing or false is returned, grep won't keep it in result )
return true;
}
// else .. don't keep the item ? ( Your choice .. don't know how you want to manage it )
});
// Return all items ( Don't filter 'prods' items and therefore return all )
return true;
});
// Print for testing
var _prods = JSON.stringify(prods)
这就是全部。