【问题标题】:merge object and objects inside array?合并数组内的对象和对象?
【发布时间】:2013-07-30 10:12:23
【问题描述】:

原始数据是这样的

var d = {A1:{name:"A1",value:10}, A2:{name:"A2",value:8}}
var l = [{name: "A1", 1min: 1, 2min:10}, {name: "A2", 1min:5, 2min:40}}

我需要做的是将dl合并为同一个name,结果会是这样的:

{A1: {name:"A1", value:10, 1min: 1, 2min:10}, 
 A2: {name: "A2", value:8, 1min:5, 2min:40}}

我认为ifloop 可以帮助我解决问题。但是对于非常大的数据集,有没有更好更简单的方法来做到这一点?

【问题讨论】:

  • 属性和names 是否总是匹配d?那么d[key].name === key;?
  • @JonathanLonowski 是的,他们总是匹配
  • 本题与d3无关。您可能正在将此数组用作 d3 图的节点列表,但这与您的问题无关。

标签: javascript jquery list functional-programming


【解决方案1】:

这行得通吗?

for (var i=0; i < l.length; ++i) {
    var tmp = l[i];

    for (var key in tmp) {
        d[ tmp.name ][ key ] = tmp[key];
    }
}

【讨论】:

  • 您实际上不需要删除名称,因为它将被相同的值覆盖。
猜你喜欢
  • 2020-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-23
  • 2022-11-19
  • 2020-07-11
  • 1970-01-01
相关资源
最近更新 更多