js中对象的属性如何更换位置

先来想一个问题,如果我想让一个对象中的两个属性更换位置,怎么办?

思路:对我而言,直接在当前对象中调换位置,那我得花些功夫,不如换成一个空的对象,手动给该对象添加属性,来达到更换位置的效果。

来看一个场景题:

    // 有以下js数组,实现按:"surname"+"name"+"address"按升序排序
    let data = [
      { name: '一山', surname: '张', address: '西藏', area: '北京' },
      { name: '尚山', surname: '利', address: '厦门', area: '北京' },
      { name: '三山', surname: '李', address: '北京', area: '北京' },
      { name: '一山', surname: '王', address: '宁夏', area: '北京' },
      { name: '散山', surname: '张', address: '福建', area: '北京' }
    ]

我的解法:

    let arr = []
    data.map(item => {
      let obj = { surname: item.surname, name: item.name, address: item.address } // 手动按序添加属性
      arr.push(obj)
    })
    console.log(arr);

该解法只适合数据量不大的情况,对于需要调整多个属性位置的情况,暂时没有更好的解决办法

——————————————————————分割线_________________________________

更新: 2022年8月30号

今天发现js有个关键字叫做 delete , 在function 中,可以通过 delete + 属性名删除对象中的属性

于是,新的思路就有了:先把name的值给到surname,再删除name,然后再给name赋值,相当于创建了属性name。这样也能实现name和surname的值互相调换(虽然和原来的题意有那么一丢丢的区别) 

猜你喜欢

转载自blog.csdn.net/A_Common_Man/article/details/125727143