如何在JavaScript中重命名数组对象的属性?

6

我有这些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中实现优雅的方式?
5个回答

15

使用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);

你也可以使用array#map

const arr = [{ id: '124', name: 'qqq' }, { id: '589', name: 'www' }, { id: '45', name: 'eee' }, { id: '567', name: 'rrr' } ],
      result = arr.map(({name, ...rest}) => ({...rest, title: name}));
console.log(result);


5

使用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);


我可以在每个浏览器中使用map方法吗? - Michael
@Michael 你有跟进我的链接吗? - Serge K.
@Michael 是的...ie9+ - Marcelo Gondim

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

3
建议在你的答案中添加一些注释。如果没有注释,例如,如果某个对象有一个额外的属性(比如“日期”),你的解决方案将导致它在数组中被“删除”,这可能不明显。 - YakovL
@MarceloGondim map 不会修改原始数组,你需要将 arr 重新赋值为结果,或者将其赋值给一个新变量。 - simon

2

无法更改属性名称,但可以添加新属性并删除旧属性,我还从某个地方得到了代码,但不记得确切的来源。

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);


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接