watsbeat
watsbeat

Reputation: 151

Remove from JS object where key value is an empty array

I'm trying to remove keys from an object where the values is Array(0). Here's the object:

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

This is the desired result:

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

So far, I've been playing with the delete operator and .filter/.reduce methods.

Any help would be awesome :)

Upvotes: 3

Views: 964

Answers (2)

cheunjm
cheunjm

Reputation: 1

The filter/reduce operators are for Arrays not for objects. If you must use the filter/reduce operators, you can try:

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

Upvotes: 0

connexo
connexo

Reputation: 56754

Just iterate over the keys of the object, check if the value for that key is an empty array and if so, delete it:

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

Upvotes: 1

Related Questions