2013-06-14 3 views
1

У меня есть массив этого формата:массив Javascript, изменять значения для всех ключей

array [ object{key1: v1, key2: v2}, object{key1: v3, key2: v4} ] 

прямо сейчас, чтобы изменить значение каждого объекта, где это клавиша позволяет сказать, key1 к v2, я am петля над каждым объектом, как это

for(var i=0;i<array.length;i++){ 
    array[i][key1] = v2; 
} 

есть ли более быстрый способ сделать это? например, можно ли передать массив вместо я люблю так

i= [0,1]; 
array[i][key1] = v2; 

ответ

1

Одним из способов является использование map():

var arr = [ {key1: 'v1', key2: 'v2'}, {key1: 'v3', key2: 'v4'} ]; 
arr = arr.map(function(x) { x.key1 = 'foo'; return x; }); 

// arr is now: [ {key1: 'foo', key2: 'v2'}, {key1: 'foo', key2: 'v4'} ]; 

Приведенный выше код изменит значение, соответствующее ключу «key1» каждого объект в массиве.

+0

позволяет сказать, что имя ключа хранилось в некоторой переменной (var J), как бы реализовать это значение – user2414932

+0

. Затем вы заменили 'x.key1' на' x [j] 'inside' map()' – techfoobar

0

использовал следующий подход:

вар обр = [{ 'key1': 5 'Key2': 4}, { 'ключ1': 3, 'Key2': 4}];

arr.map (функция (х) {х [ 'ключ1'] = 20;})

console.log (ARR);

// вывод будет [{'key1': 20, 'key2': 4}, {'key1': 20, 'key2': 4}];

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