首页 > 解决方案 > 检查密钥在javascript中是否有价值

问题描述

const sampleObj = {
    yearOne: [],
    yearTwo:[{name:"test1", age: "26"}],
    yearThree:[],
    yearFour:[{name:"test3", age: "23"}]
}

以上是我的示例对象,我需要从对象中删除所有空键值。我尝试使用此代码,来自互联网

const filterObj = Object.keys(sampleObj).forEach(key =>
    (sampleObj[key] && typeof sampleObj[key] === 'object') && delete sampleObj[key]);

但不为我工作。我得到 fliterObj 是undefined如何解决这个问题的。

我需要打印我的filterObj应该是这样的

{
    yearTwo:[{name:"test1", age: "26"}],
    yearFour:[{name:"test3", age: "23"}]
}

标签: javascript

解决方案


您可以使用reduce方法并检查数组中是否包含任何元素。

const sampleObj = {yearOne: [],yearTwo:[{name:"test1", age: "26"}],yearThree:[],yearFour:[{name:"test3", age: "23"}]}

const filterObj = Object.entries(sampleObj)
  .reduce((r, [k, v]) => {
    if (v.length) r[k] = v;
    return r;
  }, {})

console.log(filterObj)


推荐阅读