JS - Снятие ключей с объекта - PullRequest
1 голос
/ 07 февраля 2020

У меня есть вопрос, и я был бы очень признателен, если бы кто-нибудь мог объяснить мне в псевдокоде, как мне его решить

Так что здесь у нас go, у меня есть такой объект

const obj = {
     'key1': [],
     'key2': [val1, val2],
     'key3': [],
     'key4': [val3]
     }

Мне нужно удалить ключи, которые содержат пустой массив, в данном случае key1 и key3, а затем вернуть новый объект без ключей, которые содержали пустой массив. Я пытаюсь понять это самостоятельно, но я все еще JS новичок ie.

Ответы [ 3 ]

1 голос
/ 07 февраля 2020

Это можно сделать с помощью следующих действий:

  • использовать Object.entries () метод для возврата массива собственного перечисляемого свойства строкового ключа данного объекта
  • , затем используйте метод redu () для итерации по результату Object.entries. На каждой итерации вы принимаете решение, содержит ли key_x массив с length > 0

Таким образом, код выглядит так:

const result = Object.entries(obj).reduce((a, [k,v])=> {
    if (v.length > 0) {
      a[k] = v;
    }
    return a;
},{})

Пример:

const obj = {
     'key1': [],
     'key2': ['val1', 'val2'],
     'key3': [],
     'key4': ['val3']
     };

  const result = Object.entries(obj).reduce((a, [k,v])=> {
    if (v.length > 0) {
      a[k] = v;
    }
    return a;
  },{})

  console.log(result);
0 голосов
/ 07 февраля 2020

Этого можно добиться, используя простые filter и map. Отфильтруйте, где длина массива не равна нулю, и сопоставьте его с реальным объектом.

const obj = {
  "key1": [],
  "key2": [1, 2],
  "key3": [],
  "key4": [3]
};

const newArray = Object.keys(obj)
  .filter(i => obj[i].length)
  .map(j => ({[j]: obj[j]}));

console.log(newArray);
0 голосов
/ 07 февраля 2020

Подсказка, я бы использовал Object.entries для получения пары ключ-значение, а затем использовал бы уменьшение в массиве. Надеюсь, что это поможет:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...