从键值是空数组的JS对象中删除

时间:2019-05-23 23:56:15

标签: javascript arrays object

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

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

这是期望的结果:

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

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

任何帮助都会很棒:)

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

filter / reduce运算符适用于数组,不适用于对象。如果必须使用filter / reduce运算符,则可以尝试:

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);