如何有效地匹配两个不同的JavaScript对象上的ID并将它们合并在一起?

时间:2015-03-12 22:47:24

标签: javascript arrays object

这有点类似于连接表。我有两个不同的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操作。

1 个答案:

答案 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
    })
})