Извлекать только те свойства, которые имеют значение в объекте - PullRequest
0 голосов
/ 30 апреля 2018

У меня есть объект, который выглядит следующим образом:

let data = {
 color: "green",
 color1: "red",
 color2: null,
 color3: 34,
 color4: null,
 color5: true,
 color6: [],
}

Я хочу извлечь только те свойства, которые имеют значение, и создать новый объект. Так что этот новый объект будет выглядеть так:

   let data = {
     color: "green",
     color1: "red",
     color3: 34,
     color5: true,
    }

Это было бы динамично, свойства и значения могут изменяться, но в конце я всегда хочу создать объект, который имеет только значения. Какой практический способ сделать это?

1 Ответ

0 голосов
/ 30 апреля 2018

Вы можете создать new object, выполнив следующие шаги:

  • Вы можете перебирать ключи, используя Object.keys
  • Затем вы можете использовать Array.reduce для преобразования массива ключей в преобразованный объект.
  • В acc вы получите накопленный объект.
  • В curr вы получите текущий ключ
  • Создайте функцию isEmptyObject, где вы можете определить правила для проверки наличия или отсутствия. Согласно вашему примеру, я проверил на null и Array length. Вы можете изменить эту функцию.

let data = {
 color: "green",
 color1: "red",
 color2: null,
 color3: 34,
 color4: null,
 color5: true,
 color6: [],
}

var newObj = Object.keys(data).reduce((acc, curr) => {
  if (isEmptyObject(data, curr)) return acc;
  acc[curr] = data[curr];
  return acc;
}, {});

function isEmptyObject(obj, key) {
  return obj[key] === null || Array.isArray(obj[key]) && obj[key].length === 0;
}

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