某些时候为了兼容需要将多层级的object转为一层object来处理,仅保留最内层!这里使用原生js来实现
问题
将data多层级对象转为一级对象来处理:
data = {
"one": {
"name": "thanks",
"sex": "man"
},
"two": {
"money": 500,
"car": {
"color": "red",
"vendor": "ford"
}
},
"three": "just three"
}
处理后:
data = {
"color": "red",
"money": 500,
"name": "thanks",
"sex": "man",
"three": "just three",
"vendor": "ford"
}
实现
利用递归、对象合并来完成!
function objToOne(obj){
var tmpData = new Object();
for(var index in obj){
if(typeof obj[index] == 'object'){
var resObj = objToOne(obj[index]);
Object.assign(tmpData,resObj);//这里使用对象合并
}else{
tmpData[index] = obj[index];
}
}
return tmpData;
}
使用
console.log(objToOne(data));
注意
- 这里的obj仅针对
"key":"value"
形式的数据! - 适用于仅保留内层数据的需求
程序有疏漏之处欢迎指正