js如何修改数组对象里的属性名?

发布于 2022-09-12 23:00:51 字数 413 浏览 9 评论 0

场景是这样的:
得到后端返回的数据,有个字段是id。前端有个组件,传值过去支持的是uid,所以我想要把id改为uid

试了这样写没变化,问题出在哪了呢

let arr = [
    {
        id:1,
        name:"mincoo"
    },
    {
        id:2,
        name:"nxm"
    }
];
let newArr = arr.map(o=>{
    for(let key in o){
        if(key == 'id'){
            key = 'uid';
        }
    }
    return o;
});
console.log(newArr)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

梦在深巷 2022-09-19 23:00:51

个人比较习惯这样,
缺点是会保留就的属性,优点是比较省心

arr = arr.map(item => ({
    ...item,
    uid: item.id,
}))
〃安静 2022-09-19 23:00:51

新增一个uid = id, 然后把id delete了

喜你已久 2022-09-19 23:00:51

这种要求,除了增加内存消耗外,没有特别的意义,其实不建议进行特别处理。

你的代码问题在于没有理解js对象中属性名一旦确定,就不可删除,而且字符串在js中其实是不可变的。

递刀给你 2022-09-19 23:00:51

因为字符串的不可变性

这样改吧:

let newArr = arr.map(o => {
    return Object.assign(o, { uid: o.id });
});

方法不唯一。

笛声青案梦长安 2022-09-19 23:00:51
let arr = [
    {
        id:1,
        name:"mincoo"
    },
    {
        id:2,
        name:"nxm"
    }
];
let newArr = arr.map(o=>{
    var val = o.id
    delete o.id
    o.uid = val
    return o;
});
console.log(newArr)

image.png

水染的天色ゝ 2022-09-19 23:00:51

新增一个UID字段就可以了!只要有这个字段就可以用了

甜妞爱困 2022-09-19 23:00:51
let arr = [
    {
        id: 1,
        name: "mincoo"
    },
    {
        id: 2,
        name: "nxm"
    }
];

console.log(arr.map(({ id: uid, ...o }) => ({ uid, ...o })))
吾家有女初长成 2022-09-19 23:00:51

arr.map(({id, name}) => (({uid: id, name})))

〃温暖了心ぐ 2022-09-19 23:00:51
arr = JSON.parse(JSON.stringify(arr).replace(/"id"/g,'"uid"'))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文