需求:用obj1的属性值替换掉obj2的属性名
1.普通对象中替换
const obj1 = {
'入职日期': 'timeOfEntry',
'手机号': 'mobile',
'姓名': 'username',
'转正日期': 'correctionTime',
'工号': 'workNumber',
'部门': 'departmentName'
}
const obj2 = {
入职日期: 44505,
姓名: "小张",
工号: "9002",
手机号: "13800000152",
转正日期: 44892,
部门: "总裁办"
};
2.实现代码:
obj2 = Object.entries(obj1).reduce((acc, [k, v]) => {
acc[v] = obj2[k]
return acc
}, {})
console.log(obj2);
{
correctionTime: 44892;
departmentName: "总裁办";
mobile: "13800000152";
timeOfEntry: 44505;
username: "小张";
workNumber: "9002";
}
obj2 = Object.entries(obj1).reduce( (acc, [k, v]) => ((acc[v] = obj2[k]), acc),{});
2.数组数据中的对象替换
const mapInfo = {
入职日期: "timeOfEntry",
手机号: "mobile",
姓名: "username",
转正日期: "correctionTime",
工号: "workNumber",
部门: "departmentName"
};
const arr =[{
入职日期: 44505,
姓名: "小张",
工号: "9002",
手机号: "13800000152",
转正日期: 44892,
部门: "总裁办"
},
{
入职日期: 3356,
姓名: "小李",
工号: "9002",
手机号: "13333333333",
转正日期: 8888,
部门: "人事部"
}]
实现代码:
const newarr = arr.map( item => {
return Object.entries(item).reduce((acc, [k, v]) => (acc[mapInfo[k]] = v, acc), {})
})
console.log(newarr);
总结:reduce方法依然这么强大