js修改对象属性名

代码

// 更改对象属性名
// 第一个参数为要更改的对象,第二个参数为属性名映射数组
// 如将属性名为 “日期” 更改为 "date" : [{ key: '日期', value: 'date' }]
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' },
        ]
// 更改excel数据属性名
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))  
//  {"date":"2023","年龄":{"a":12,"b":23},"tall":[12,4,5,6],"weight":78}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值