Удалить из объекта JS, где значение ключа является пустым массивом - PullRequest
3 голосов
/ 24 мая 2019

Я пытаюсь удалить ключи от объекта, где значения Array (0).Вот объект:

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

Это желаемый результат:

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

До сих пор я играл с оператором удаления и методами .filter / .reduce.

Любая помощь будет потрясающей:)

Ответы [ 2 ]

1 голос
/ 24 мая 2019

Просто переберите ключи объекта, проверьте, является ли значение этого ключа пустым массивом, и если да, удалите его:

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 голосов
/ 24 мая 2019

Операторы фильтра / уменьшения предназначены для массивов, а не для объектов. Если вы должны использовать операторы фильтра / сокращения, вы можете попробовать:

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...