问答

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

作者:admin 2021-04-17 我要评论

场景是这样的: 得到后端返回的数据,有个字段是id。前端有个组件,传值过去支持的是uid,所以我想要把id改为uid 试了这样写没变化,问题出在哪了呢 let arr = [...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

场景是这样的:
得到后端返回的数据,有个字段是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)
###

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

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

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

###

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

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

###

因为字符串的不可变性

这样改吧:

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

方法不唯一。

###
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

###

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

###
let arr = [
    {
        id: 1,
        name: "mincoo"
    },
    {
        id: 2,
        name: "nxm"
    }
];

console.log(arr.map(({ id: uid, ...o }) => ({ uid, ...o })))
###

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

###
arr = JSON.parse(JSON.stringify(arr).replace(/"id"/g,'"uid"'))

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • nginx响应速度很慢

    nginx响应速度很慢

  • 点击选中的多选框,会在已选那一栏显示

    点击选中的多选框,会在已选那一栏显示

  • PHP 多态的理解

    PHP 多态的理解

  • 关于C语言中static的问题

    关于C语言中static的问题

腾讯云代理商
海外云服务器