从JS对象中删除键值为空数组的元素

3

我正在尝试从值为Array(0)的对象中删除键。以下是该对象:

{fruit: Array(1), dairy: Array(2), vegetables: Array(0)}

这是期望得到的结果:
{fruit: Array(1), dairy: Array(2)}

到目前为止,我一直在使用删除运算符和.filter/.reduce方法。

任何帮助都将是极好的 :)


你目前想到了什么? - goodvibration
2个回答

1

只需遍历对象的键,检查该键对应的值是否为空数组,如果是,则删除它:

let obj = {
  a: [1],
  b: [],
  c: 5,
  d: false
}

for (const key in obj) { if (Array.isArray(obj[key]) && !obj[key].length) delete obj[key] };

console.log(obj);


0

筛选/归约操作符适用于数组而不是对象。如果您必须使用筛选/归约操作符,可以尝试以下方法:

const obj = {a: [1], b: [1,2], c: []};

const filtered = Object.keys(obj)
  .filter(key => Array.isArray(obj[key]) && obj[key].length != 0)
  .reduce((acc, key) => {acc[key] = obj[key]; return acc}, {});
  
console.log(filtered);


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接