更改对象数组中的键|| javascript

时间:2019-03-31 10:24:16

标签: javascript arrays object

我有一些来自api调用的对象数组。每个对象都有一个名为id的键。我想将此ID更改为数组中每个对象的post_id 每个对象中的第一个键是id,所以我已经在下面的代码中访问了索引0。

谢谢。

function changePostId(receivedData) {
    receivedData.forEach(obj => {
      var keys = Object.keys(obj);
       var key = keys[0].replace(/^id/, "post_id");
       tmp[key] = obj[keys[0]];

    });
    }

4 个答案:

答案 0 :(得分:1)

您真的使事情变得太复杂了。您无需使用Object.keys,只需访问.id

for(const obj of receivedData) {
  obj.post_id = obj.id;
  delete obj.id;
}

答案 1 :(得分:1)

您可以使用map()Spread Operator。返回具有其余属性且post_id等于对象的id的对象。

let arr = [
  {id:0,other:"elm 1"},
  {id:1,other:"elm 2"},
  {id:2,other:"elm 3"},
]
let res = arr.map(({id,...rest}) => ({post_id:id,...rest}));

console.log(res);

使用delete

如果要修改原始数据,可以使用delete

let arr = [
  {id:0,other:"elm 1"},
  {id:1,other:"elm 2"},
  {id:2,other:"elm 3"},
]
arr.forEach(item => {
  item.post_id = item.id;
  delete item.id;
})

console.log(arr);

答案 2 :(得分:0)

更新keys数组不会更新对象本身。

您需要做的是:

  1. 创建属性post_id并分配obj.id
  2. 删除obj.id属性
function changePostId(receivedData) {
  receivedData.forEach(obj => {
    obj.post_id = obj.id;
    delete obj.id;
  });
}

答案 3 :(得分:0)

从对象访问id密钥并将其分配给新密钥(post_id),然后删除post_id。

receivedData.forEach(obj => {
  obj.post_id = obj.id;
  delete obj.id;
})