今天在用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的名称顺序一定要和想要修改成的顺序相同。