2017-04-24 157 views
0

的陣列的例子將自己說話:對象操作的javascript,添加對象的值到對象

[{ 
    userId: 'ab4e3870-287e-11e7-b5a1-abb6183e9866', 
    email: '[email protected]' 
},{ 
    userId: 'ae149220-2883-11e7-bbf9-1fb134f2b4ad', 
    email: '[email protected]' 
}] 

對象

{ 
    'ab4e3870-287e-11e7-b5a1-abb6183e9866': { name: 'john', roles: 'detective'}, 
    'ae149220-2883-11e7-bbf9-1fb134f2b4ad': { name: 'james', roles: 'plumber'}, 
} 

結果我」:

對象的陣列d like would將是:

[{ 
    userId: 'ab4e3870-287e-11e7-b5a1-abb6183e9866', 
    email: '[email protected]', 
    name: 'john', 
    roles: 'detective' 
},{ 
    userId: 'ae149220-2883-11e7-bbf9-1fb134f2b4ad', 
    email: '[email protected]', 
    name: 'james', 
    roles: 'plumber' 
}] 

因此,基本上,與對象中的userId匹配的鍵的值被添加到該數組中的該對象。

有沒有一些簡單的方法,我不明白這樣做? ES6中沒有外部庫?

+0

當然,只是通過陣列和所述對象鍵進行迭代,並檢查數組對象是否具有一個userId等於另一個對象的鍵 – Isaac

回答

1
var data = [{ 
    userId: 'ab4e3870-287e-11e7-b5a1-abb6183e9866', 
    email: '[email protected]' 
},{ 
    userId: 'ae149220-2883-11e7-bbf9-1fb134f2b4ad', 
    email: '[email protected]' 
}] 

var d = { 
    'ab4e3870-287e-11e7-b5a1-abb6183e9866': { name: 'john', roles: 'detective'}, 
    'ae149220-2883-11e7-bbf9-1fb134f2b4ad': { name: 'james', roles: 'plumber'}, 
}; 

使用ES6傳播算子...

data = data.map(function(item) { 
    return {...item, ...d[item.userId]} 
}); 

ES5:通過添加屬性中手動

data = data.map(function(item) { 
    item.name = d[item.userId].name; 
    item.roles = d[item.userId].roles; 
    return item; 
});