js 替换数组对象的属性名

JS 专栏收录该内容
33 篇文章 0 订阅

我们第一时间就想到用JSON.parse的形式,但是这种不是很合理

法一:用基础的遍历办法(针对已知的替换)

const jobList = [
	{
		name: 'Tom',
		work: 'FE engineer'
	},
	{
		name: 'Tiny',
		work: 'Accounting'
	},
	{
		name: 'Bob',
		work: 'Chief'
	}
]

function changeKeys(list){
	list.forEach(elem => {
		elem['nick_name'] = elem.name;  //这里的nick_name为目标属性名
		elem['job'] = elem.work // 这里的job为目标属性名
		delete elem.name;
		delete elem.work
	})
	return list
}

console.log(changeKeys(jobList))

法二:原声的Object方法(针对未知的替换)

const jobList = [
	{
		name: 'Tom',
		work: 'FE engineer'
	},
	{
		name: 'Tiny',
		work: 'Accounting'
	},
	{
		name: 'Bob',
		work: 'Chief'
	}
]

const target =
 [
 	['nick_name', 'name'],
 	['job', 'work']
 ]

function changeKeys(list, tar){
	list.forEach(elem => {
	  tar.forEach(pair => {
	      const oldKey = pair[1];
	      const newKey = pair[0];
	      if (oldKey !== newKey && elem[oldKey]) {
	        // 这里主要处理的是把新的属性给到老的属性
	        Object.defineProperty(elem, newKey, Object.getOwnPropertyDescriptor(elem, oldKey));
	        delete elem[oldKey];
	      }
	    });
	})
	return list;
}

console.log(changeKeys(jobList, target))
  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值