2011-07-24 13 views
18

Jak zmienić nazwę klucza w tablicy obiektów?Zmienianie nazwy klucza w tablicy obiektów?

var arrayObj = [{key1:'value1', key2:'value2'},{key1:'value1', key2:'value2'}]; 

Jak mogę zmienić tak, aby każdy key1stroke że dostanę:

var arrayObj = [{stroke:'value1', key2:'value2'},{stroke:'value1', key2:'value2'}]; 

Odpowiedz

22
var i; 
for(i = 0; i < arrayObj.length; i++){ 
    arrayObj[i].stroke = arrayObj[i]['key1']; 
    delete arrayObj[i].key1; 
} 
+0

Możesz to zobaczyć tutaj: http://jsfiddle.net/Paulpro/XVxvy/2/ Ostrzega "nieokreślony", a następnie "value1" – Paulpro

+0

Dzięki za rozwiązanie, ale co, jeśli obiekt jest z kluczem dynamicznym? jak: var arrayObj = [{abcKey, 'value1', acdKey: 'value2', defKey: 'value3', cfgKey: 'value4'}]; – Dhaval

3
function changeKey(originalKey, newKey, arr) 
{ 
    var newArr = []; 
    for(var i = 0; i < arr.length; i++) 
    { 
    var obj = arr[i]; 
    obj[newKey] = obj[originalKey]; 
    delete(obj[originalKey]); 
    newArr.push(obj); 
    } 
    return newArr; 
} 
2

Nie zmienić nazwę klucza. Możesz przypisać nową nazwę/wartość klucza, a następnie usunąć poprzedni klucz, jeśli chcesz. W przykładzie:

var arrayObj = [{key1,'value1', key2:'value2'},{key1,'value1', key2:'value2'}]; 
var o = arrayObj[0]; // get first object 
var val = o.key1;  // get current value 
o.stroke = val;  // assign to new key 
delete o.key1;   // remove previous key 

Jeśli chciał to zrobić dla wszystkich obiektów w głównej tablicy, to po prostu umieścić, że w pętli, która wykonuje iteracje nad treścią swojej tablicy. Wprowadziłem tu więcej pośrednich zadań niż to konieczne, aby udokumentować, co się dzieje.

Albo skrócona wersja w pętli:

for (var i = 0; i < arrayObj.length; i++) { 
    var o = arrayObj[i]; 
    o.stroke = o.key1; 
    delete o.key1; 
} 
12

nie można zmienić nazwy właściwości, trzeba dodać wartość z nową nazwą i usunąć stary właściwość:

for (var i = 0; i < arrayObj.length; i++) { 
    arrayObj[i].stroke = arrayObj[i].key1; 
    delete arrayObj[i].key1; 
} 
+0

Czy 'delete' jest obsługiwane przez wszystkie wersje przeglądarek? –

+0

Tak, jest to część języka JavaScript. – Guffa

+0

OK, z jakiegoś powodu myślałem, że nie jest obsługiwany przez niektóre wersje IE lub coś. –

Powiązane problemy