2015-02-16 5 views
0

Я хочу перебрать массив объектов и передать объект wach в новый массив.итерация по массиву объектов с использованием карты

Но результат всегда является последним объектом.

obj = [{ text: 'a'},{ text: 'b'}]; 
obj.map(funktion(item){ 
    result.push(Ext.merge({xtype: 'button'}, item)); 
}); 

// result is twice with text:'b' 

Это всегда последний элемент. Как умирает эта работа?

Ext.merge просто объединяет два объекта, такие же, как слияние JavaScript.

EDIT 1: так я изменил

obj = [{ text: 'a'},{ text: 'b'}]; 
btnsDest = obj.map(function(item){ 
    return Ext.merge({xtype: 'button'}, item); 
}); 

Тем не менее то же самое. btnsDest [я] .text всегда «б»

EDIT 2: , так что я на самом деле был следующий и tagt не работает

button = { xtype: 'button'}; 
obj = [{ text: 'a'},{ text: 'b'}]; 
btnsDest = obj.map(function(item){ 
    return Ext.merge(button, item); 
}); 

Поэтому добавления кнопки уага в обратном вызов сделал трюк.

ответ

1

В функции обратного вызова map «s вам нужно вернуть преобразованное значение (mapped):

obj = [{ text: 'a'},{ text: 'b'}]; 
obj.map(function(item){ 
    return Ext.merge({xtype: 'button'}, item); 
}); 

Ниже то, что я пытался в моем конце с node и она работает:

function merge_options(obj1,obj2){ 
    var obj3 = {}; 
    for (var attrname in obj1) { obj3[attrname] = obj1[attrname]; } 
    for (var attrname in obj2) { obj3[attrname] = obj2[attrname]; } 
    return obj3; 
} 

button = { xtype: 'button'}; 
obj = [{ text: 'a'},{ text: 'b'}]; 
btnsDest = obj.map(function(item){ 
     return merge_options(button, item); 
}); 

console.log(JSON.stringify(btnsDest)); 

Выход:

[{"xtype":"button","text":"a"},{"xtype":"button","text":"b"}] 
+0

Спасибо, но, пожалуйста, см. Мое редактирование. Ничего не изменилось. – Dinkheller

+0

Aarrrrg. Я определил кнопку как объект вне обратного вызова и использовал кнопку внутри слияния обратного вызова. Это не работает. – Dinkheller

+0

сделал это работа? Я отправляю что-то, что я пытался с узлом на моем конце, и он работает. –

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