2013-02-12 4 views
1

Каков наиболее эффективный способ смешивания значений от extra до arr, чтобы произвести result без изменения arr в любом случае? , используя: простой javascript, подчеркивание, lodash (подчеркивание совместимости), jquery ИЛИ lodash, в порядке предпочтения.Свойства объекта смешивания в массив объектов

arr = [ 
    {name: "A"}, 
    {name: "B"}, 
    {name: "C"}, 
] 

.

extra = { 
    "B": value1 
    "C": value2 
} 

.

result == [ 
    {name: "A"}, 
    {name: "B", extra: value1}, 
    {name: "C", extra: value2}, 
] 
// true ! 

ответ

2
for (var x = 0; x < arr.length; x++) { 
    if (arr[x].hasOwnProperty('name')) { 
     if (extra.hasOwnProperty(arr[x].name)) { 
      arr[x].extra = extra[arr[x].name]; 
     } 
    } 
} 

Наружный hasOwnProperty, вероятно, слишком много.

http://jsfiddle.net/Y3Abe/2/

+1

Я был в середине того же, так что я добавил свой jsfiddle здесь и исправил пару недостающих ')'. –

+0

в этом решении изменяются объекты в 'arr'. есть ли способ сделать это, сделав вместо этого глубокий клон «arr»? – johowie

+0

@johowie вы можете использовать '_.clone' на объекте заранее, возможно –

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