我有一些来自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]];
});
}
答案 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数组不会更新对象本身。
您需要做的是:
post_id
并分配obj.id
值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;
})