2017-07-07 118 views
1

我有這樣的JavaScript對象:如何在javascript中重命名數組中對象的屬性?

var arr = [{id:'124',name:'qqq'}, 
      {id:'589',name:'www'}, 
      {id:'45',name:'eee'}, 
      {id:'567',name:'rrr'}] 

我需要ARR1與name重命名屬性title

var arr = [{id:'124',title:'qqq'}, 
      {id:'589',title:'www'}, 
      {id:'45',title:'eee'}, 
      {id:'567',title:'rrr'}] 

什麼來實現它在Javascript優雅的方式?

+0

你嘗試過什麼,或者你只是想讓你做功課? –

回答

3

使用delete從對象中移除屬性。 使用obj['newProperty']newProperty分配給對象。

var arr = [{id:'124',name:'qqq'}, 
 
      {id:'589',name:'www'}, 
 
      {id:'45',name:'eee'}, 
 
      {id:'567',name:'rrr'}]; 
 
      
 
arr.forEach(function(data) { 
 
    data['title'] = data['name']; 
 
    delete data['name']; 
 
}); 
 

 
console.log(arr);

0

使用map

var arr = [{ 
 
    id: '124', 
 
    name: 'qqq' 
 
    }, 
 
    { 
 
    id: '589', 
 
    name: 'www' 
 
    }, 
 
    { 
 
    id: '45', 
 
    name: 'eee' 
 
    }, 
 
    { 
 
    id: '567', 
 
    name: 'rrr' 
 
    } 
 
] 
 

 
arr = arr.map((e) => { 
 
    return { 
 
    id: e.id, 
 
    title: e.name 
 
    } 
 
}); 
 

 
console.log(arr);

+0

我可以在每個瀏覽器中使用地圖方法嗎? – Michael

+0

@Michael你有沒有關注我的鏈接? –

+1

@Michael請參閱Nathan的鏈接或https://caniuse.com/#search=map –

0
arr.map(e => { return { id: e.id, title: e.name }}); 
+1

我建議您在回答中添加一些評論。沒有它,例如,如果某個對象具有額外的屬性(例如「date」),則可能並不明顯,您的解決方案將導致其在數組中「刪除」。 – YakovL

2

這是不可能改變的屬性的名稱,但增加了一個新的和刪除老人 一個,我也得到了代碼從某處不remeber確切來源

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; 
} 
0

這裏是你如何刪除鍵和值,並分配給新的密鑰:

var arr = [{id:'124',name:'qqq'}, 
 
      {id:'589',name:'www'}, 
 
      {id:'45',name:'eee'}, 
 
      {id:'567',name:'rrr'}] 
 
      
 
arr.forEach(function(o) { 
 
    Object.defineProperty(o, 'title', 
 
     Object.getOwnPropertyDescriptor(o, 'name')); 
 
    delete o['name']; 
 
});   
 
console.log(arr);