javascript修改对象的全部或部分属性名(es6)

今天在用ant design of vue组件库时遇到这样一个需求,使用select组件,这个组件需要的数据数组对象必须要包括key值和label值,即

dataList = [{key:'1',label:'中国'}]

但是我要显示的数据是接口返回的,并没有这两个属性名,所以就需要把对应的属性名更改为select组件支持的名称。

正好前些天学了es6对象新增的一些对象方法,然后就用在了这里,而且很好用。

方法如下:

使用Object.entries()Object.fromEntries()方法实现

const arr = [
  { id: 1, name: "wyy", age: 22, sex: "girl" },
  { id: 2, name: "lm", age: 12, sex: "boy" },
  { id: 3, name: "xh", age: 20, sex: "girl" },
];
function changeName(arr, names) {
  const newArr = [];
  arr.forEach((item) => {
    const objL = Object.entries(item);
    objL.forEach((ite, i) => {
      if (names[i] === undefined) return;
      ite[0] = names[i];
    });
    item = Object.fromEntries(objL);
    newArr.push(item);
  });
  return newArr;
}
console.log(changeName(arr, ["编号", "姓名", "年龄", "性别"]));

运行结果

 以上方法即可以修改对象中全部的属性名,也可以修改部分的属性名,不过names的名称顺序一定要和想要修改成的顺序相同。

猜你喜欢

转载自blog.csdn.net/weixin_57399180/article/details/125254757