这有点类似于连接表。我有两个不同的JavaScript对象。其中一个对象是一个对象数组,其中该对象中的一个属性是一个id数组。这些id直接映射到另一个javascript对象数组。
离。
users = [{
name: 'Bob',
birthday: '01-02-1990',
favorite_color_ids: ['2', '4', '6']
},
{
....etc
}]
colors: [{
id: 2,
name: 'red',
hex_val: '#FF0000'
},
{
...etc
}]
我想在users数组中的每个对象上创建另一个属性,称为“favorite_color_names”。最有效的方法是什么?目前有许多嵌套的_.each操作。
答案 0 :(得分:1)
扩展我上面的评论,如果你需要频繁地按ID访问颜色,但不能从数组中更改结构,我只需继续动态创建一个通过ID引用每种颜色的对象结构。
var colors_by_id = {}
colors.forEach(color) {
colors_by_id[color.id] = color
})
然后,如果你希望每个用户,你可以制作你的名字数组(虽然它看起来不那么重要,因为你现在可以轻松地获得它)。
users.forEach(user) {
user.favorite_color_names = user.favorite_color_ids.map(function(id) {
return colors_by_id[id].name
})
})