javascript - 检查密钥在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"}]
}
解决方案
您可以使用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)