这一题要求将对象或者数组中存在的假
值剔除掉,并且其中属性值本身可能也会是一个数组或者对象,即嵌套的对象进行精简,这一题核心思路是递归
注意
- 对象是一个有效的JSON
只移除为
假
的值,JS中为假的值需要注意的是数字0也是假值
输入为 [null, 0, 5, [0], [false, 16]] 结果为 [5, [], [16]]
提解
var compactObject = function(obj) {
if(Array.isArray(obj)){
return obj.filter(Boolean).map(compactObject)
}
if(obj instanceof Object){
const res = {}
for(const [key,value] of Object.entries(obj)){
if(Boolean(value)){
// 普通值会直接return
// 不是则继续遍历这个非普通值的value并把遍历剔除后的对象返回给上一级
res[key] = compactObject(value)
}
}
return res
}
return obj
};