2016-04-06 3 views
-1

Я пытаюсь добавить свойство к каждому объекту в массиве:Добавить объект к каждому объекту в массиве

var capitals = [{ 
    country: "What's the capital of Ecuador?", 
    choices: ["Quito", "Caracas", "Panama", "Loja"], 
    corAnswer: 0 
}, { 
    country: "What is the capital of China?", 
    choices: ["Shanghai", "Beijing", "Ghangzou", "Hong Kong"], 
    corAnswer: 0 
}]; 

должны стать:

var capitals = [{ 
     country: "What's the capital of Ecuador?", 
     choices: ["Quito", "Caracas", "Panama", "Loja"], 
     corAnswer: 0, 
     global: true 
    }, { 
     country: "What is the capital of China?", 
     choices: ["Shanghai", "Beijing", "Ghangzou", "Hong Kong"], 
     corAnswer: 0, 
     global: true 
    }]; 

Массив может содержать несколько объектов. Какая функция мне нужна?

ответ

6

Вы должны использовать forEach в этом контексте,

capitals.forEach(function(itm){ 
itm.global = true; 
}); 

Если вы не знакомы с использованием forEach, то вы можете сделать ту же работу, используя для цикла.

for(var i=0,len=capitals.length;i<len;i++){ 
    capitals[i].global = true; 
} 
+0

я бы предложил использовать '.map' не мутировать исходный массив объектов –

+1

@VladimirStarkov, который будет создайте клон без необходимости. Я считаю, что для этого контекста не требуется «карта». –

+0

OP не сказал ничего о контексте, используя 'map', предоставил вам явный поток данных вместо неявного с' forEach' –

-1

Если вы не должны поддерживать устаревшие версии браузеров, то вы могли бы использовать Array.prototype.map

+0

Downvoted, потому что вы не пытались ответить на вопрос. Хороший ответ покажет, как использовать эту функцию в контексте этого вопроса. – adamdport

0
var capitals = [{ 
    country: "What's the capital of Ecuador?", 
    choices: ["Quito", "Caracas", "Panama", "Loja"], 
    corAnswer: 0 
}, { 
    country: "What is the capital of China?", 
    choices: ["Shanghai", "Beijing", "Ghangzou", "Hong Kong"], 
    corAnswer: 0 
}]; 
for(i in capitals) { 
    capitals[i].global = true; 
} 
console.log(capitals) 
+0

Использование 'for..in' над массивом приносит вам странные результаты, поскольку он будет перебирать перечислимые свойства, пока не встретит конец цепи прототипов. –

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