如何更改對象數組中的鍵名?更改對象數組中的鍵名?
var arrayObj = [{key1:'value1', key2:'value2'},{key1:'value1', key2:'value2'}];
我怎樣才能改變每個key1
到stroke
讓我得到:
var arrayObj = [{stroke:'value1', key2:'value2'},{stroke:'value1', key2:'value2'}];
如何更改對象數組中的鍵名?更改對象數組中的鍵名?
var arrayObj = [{key1:'value1', key2:'value2'},{key1:'value1', key2:'value2'}];
我怎樣才能改變每個key1
到stroke
讓我得到:
var arrayObj = [{stroke:'value1', key2:'value2'},{stroke:'value1', key2:'value2'}];
var i;
for(i = 0; i < arrayObj.length; i++){
arrayObj[i].stroke = arrayObj[i]['key1'];
delete arrayObj[i].key1;
}
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;
}
你不改變一個鍵名。您可以分配一個新的密鑰名稱/值,然後如果需要刪除以前的密鑰。在您的例子:
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
如果你想這樣做,你的主陣列中的所有對象,你只想把在一個循環,在你的數組的內容進行迭代。我在這裏放置了更多的中間任務,而不是僅僅記錄正在發生的事情。
或循環縮短版:
for (var i = 0; i < arrayObj.length; i++) {
var o = arrayObj[i];
o.stroke = o.key1;
delete o.key1;
}
您不能更改屬性名稱,你必須用一個新的名字添加值並刪除舊的屬性:
for (var i = 0; i < arrayObj.length; i++) {
arrayObj[i].stroke = arrayObj[i].key1;
delete arrayObj[i].key1;
}
你可以在這裏看到它:http://jsfiddle.net/Paulpro/XVxvy/2/它警告「未定義」,然後「value1」 – Paulpro
感謝您的解決方案,但如果對象是動態密鑰?例如:var arrayObj = [{abcKey,'value1',acdKey:'value2',defKey:'value3',cfgKey:'value4'}]; – Dhaval