大家好!我叫戴向天
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'})
效果如图: