2013-07-30 6 views
2

Исходные данные, как этотСлияние объектов и объектов внутри массива?

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}} 

Что мне нужно сделать, это объединить d и l вместе для того же name, результат будет выглядеть так:

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

Я думаю if и loop может помочь мне разобраться. Но для очень большого набора данных есть ли лучший и простой способ сделать это?

+0

Свойства и 'имя' всегда совпадают в 'd'? Итак, 'd [key] .name === key;'? –

+0

@JonathanLonowski Да, они всегда соответствуют –

+0

Этот вопрос не имеет ничего общего с d3. Вероятно, вы используете этот массив в качестве списка узлов для графика d3, но это не имеет никакого отношения к вашему вопросу. – Amberlamps

ответ

2

Это работает?

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

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

На самом деле вам не нужно удалять имя, поскольку оно будет переопределено с тем же значением. – Amberlamps

+0

@Amberlamps Хорошая добыча! Я немного устал.. –

Смежные вопросы