代码
export function copyTransFunc (obj, typeArr) {
let result;
let toString = Object.prototype.toString;
if (toString.call (obj) === '[object Array]') {
result = [];
for (let i = 0; i < obj.length; i++) {
result[i] = copyTransFunc (obj[i], arguments[1])
}
} else if (toString.call (obj) === '[object Object]') {
result = {};
for (let _key in obj) {
if (obj.hasOwnProperty (_key)) {
let flag = 0, _value = null;
for (let j = 0; j < arguments[1].length; j++) {
if (arguments[1][j].key === _key) {
flag = 1;
_value = arguments[1][j].value
}
}
if (flag)
result[_value] = copyTransFunc (obj[_key], arguments[1]);
else
result[_key] = copyTransFunc (obj[_key], arguments[1])
}
}
} else {
return obj
}
return result
}
使用
import { copyTransFunc } from '@/utils/formatDataKey.js'
......
let keyMapping = [
{ key: '日期', value: 'date' },
{ key: '岗位', value: 'station' },
{ key: '工单号', value: 'workOrder' },
{ key: '工作内容', value: 'tasks' },
{ key: '工作时长', value: 'workHours' },
{ key: '开始时间', value: 'startWorkTime' },
{ key: '结束时间', value: 'endWorkTime' },
]
this.excelData = copyTransFunc(this.excelData, keyMapping)
ES10版
let obj = {
'日期':'2023',
'年龄':{
a:12,
b:23,
},
'身高':[12,4,5,6],
'体重':78
}
let keymapping = [
{key:'日期',newKey:'date'},
{key:'体重',newKey:'weight'},
{key:'身高',newKey:'tall'}
]
function changeKey2(obj,kepmapping){
let oldKeysArr = Object.keys(obj)
let arr = Object.entries(obj)
let changedKeyIndex = []
keymapping.forEach(item=>{
if(oldKeysArr.indexOf(item.key)!==-1){
arr[oldKeysArr.indexOf(item.key)][0] = item.newKey
}
})
return Object.fromEntries(arr)
}
console.log(changeKey2(obj,keymapping))