LeetCode - 2705.精简对象

学习 · 2023-10-30 · 43 人浏览

这一题要求将对象或者数组中存在的值剔除掉,并且其中属性值本身可能也会是一个数组或者对象,即嵌套的对象进行精简,这一题核心思路是递归

注意

  1. 对象是一个有效的JSON
  2. 只移除为的值,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
        };
Theme Jasmine by Kent Liao