更改对象数组中的键名?

Joh*_*per 30 javascript

如何更改对象数组中的键名?

var arrayObj = [{key1:'value1', key2:'value2'},{key1:'value1', key2:'value2'}];
Run Code Online (Sandbox Code Playgroud)

我怎样才能改变每个key1stroke让我得到:

var arrayObj = [{stroke:'value1', key2:'value2'},{stroke:'value1', key2:'value2'}];
Run Code Online (Sandbox Code Playgroud)

Pau*_*aul 35

var i;
for(i = 0; i < arrayObj.length; i++){
    arrayObj[i].stroke = arrayObj[i]['key1'];
    delete arrayObj[i].key1;
}
Run Code Online (Sandbox Code Playgroud)


Guf*_*ffa 17

您无法更改属性名称,必须使用新名称添加值并删除旧属性:

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


Mar*_*cus 13

在最近的JavaScript(和TypeScript)中,使用destructure with rest pattern,spreadarray map来替换对象数组中的一个关键字符串.

const arrayOfObj = [{key1:'value1', key2:'value2'},{key1:'value1', key2:'value2'}];
const newArrayOfObj = arrayOfObj.map(({ key1: stroke, ...rest }) => ({ stroke, ...rest }));
// [{stroke:'value1', key2:'value2'},{stroke:'value1', key2:'value2'}]
Run Code Online (Sandbox Code Playgroud)

  • Spread 是可选的,如果您想将旧值保留在数组中,它就在那里。不错的答案,但确实简洁而强大。 (2认同)
  • @Prashant,好问题(如何动态传递“中风”)!以下代码对您有用吗?```const newKey = '笔划'; const newArrayOfObj = arrayOfObj.map(({ key1, ...rest }) =&gt; ({ [newKey]: key1, ...rest }));``` (2认同)

小智 11

ES6 只需要一行代码

尝试以下代码:

arrayObj.map(({ stroke, key2 }) => ({ yourNewKey: stroke, yourNewKey2: key2 }));
Run Code Online (Sandbox Code Playgroud)


ale*_*351 7

ES6 map()方法:

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

arrayObj = arrayObj.map(item => {
      return {
        value: item.key1,
        key2: item.key2
      };
    });
Run Code Online (Sandbox Code Playgroud)

  • 但是您需要知道对象中的所有键,并将它们中的每个键写入返回对象中。 (2认同)

Ash*_*far 6


const company =  [{ id:"1", name:"somename"},{ id:"1", name:"somename"}]

company.map(({ id, name }) => ({ companyId: id, companyName: name }));

// output
//[{ companyId:"1", companyName:"somename"},{ companyId:"1", //companyName:"somename"}]

Run Code Online (Sandbox Code Playgroud)