数据字段转换 dataFiledChange - 戴向天

51 篇文章 0 订阅

大家好!我叫戴向天

QQ群:602504799

如若有不理解的,可加QQ群进行咨询了解

let dataMap = {
	obj: {
		name: '戴向天',
		age: '24',
		friends: [
			{
				name: '戴向天1',
				age: '24',
			},
			{
				name: '戴向天2',
				age: '24',
			},
		],
		family: {
			father:{
				name: '戴向天3',
				age: '24',
			},
			mother: {
				name: '戴向天4',
				age: '24',
			}
		}
	}
}

// 数据字段转化
function dataFiledChange(data = null,fieldMap = {}){
	
	// 判断传进来的数据适不适合字段转换
	if(!isObject(data)){
		return data;
	}
	
	if(isObject(fieldMap)){
		if(Array.isArray(fieldMap)){
			console.warn('fieldMap must is json format ')
			return data;
		}
		if(Object.keys(fieldMap).length < 0){
			return data;
		}
	}
	
		
	
	// 判断是不是对象
	function isObject(obj){
		
		if(obj !== null && obj !== undefined && !obj.toString().trim()){
			return false;
		}
		
		return  typeof obj === 'object';
	}
	
	// 数组转换
	function arrayHandler(arr,field = {}){
		return arr.map((obj)=>{
			const isNeed = isObject(obj);
			return isNeed?
				Array.isArray(obj)?
					arrayHandler(obj,field)
					:jsonHandler(obj,field)
				:obj;
			
		})
	}
	
	// json数据转换
	function jsonHandler(json,field = {}){
		return Object.keys(json).reduce((total,key)=>{
			const rigthKey = field[key]
			const val = json[key];
			const isNeed = isObject(val);
			
			total[rigthKey || key] = isNeed?
										Array.isArray(val)?
											arrayHandler(val,field)
											:jsonHandler(val,field)
										:val
			
			return total;
			
		},{});
	}
	
	// 返回结果
	return Array.isArray(data)?
					arrayHandler(data,fieldMap)
					:jsonHandler(data,fieldMap)
	
}

dataFiledChange(dataMap.obj,{name:'nickanme'})

效果如图:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值