JavaScript如何将层级Json转换成平级Json, 同时过滤掉为null或undefined的属性值?。例如:
var obj = {
"A": {
"a0": null,
"a1": undefined,
"a2": 2
},
"B": {
"b": [3, 1, 4]
}
}
转化为:
{
"A.a2": 2,
"B.b.0": 3,
"B.b.1": 1,
"B.b.2": 4
}
实现代码
let comType=['object','array']
let result={};
function plat(obj, prekey, resobj){
prekey = prekey?prekey+'.':''
let keys = Object.keys(obj)
keys.forEach(item=>{
let val = obj[item]
let type = typeof val
if(comType.indexOf(type) != -1 && val){
plat(val,prekey+item,resobj);
}
else{
if(val !== null && val !== undefined){
resobj[prekey+item]=val;
}
}
})
}
plat(obj, '', result)
console.log(result)