Задать вопрос
@VolodymyrWork

Как сделать проверку на определенные значения при создании объектов?

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

const arr = [
    {
        id: 1,
        name: 'name 1',
        optional: ''
    },
    {
        id: 2,
        name: 'name 2',
        optional: 'Hi!'
    },
    {
        id: 3,
        name: 'name 3',
        optional: ''
    }
]

arr.map((obj)=>{
    const newObj = { 
        id: obj.id,
        name:  obj.name,
        optional: obj.optional // если obj.optional пустой Этого значение вообще не должно быть в этом объекте
})

Должен получить три объекта:

{
        id: 1,
        name: 'name 1',
    }

    {
        id: 2,
        name: 'name 2',
        optional: 'Hi'
    }

    {
        id: 3,
        name: 'name 3'
    }
  • Вопрос задан
  • 54 просмотра
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
  • Академия Эдюсон
    Fullstack-разработчик на JavaScript + ИИ
    11 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Инженер по тестированию + ИИ
    6 месяцев
    Далее
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Как понять, что значение "пустое":

const isEmpty = x =>
  x instanceof Object
    ? !Object.keys(x).length
    : !x;

Проверяем все свойства:

const newArr = [];
for (const n of arr) {
  const newObj = newArr[newArr.length] = {};
  for (const k in n) {
    n.hasOwnProperty(k) && !isEmpty(n[k]) && (newObj[k] = n[k]);
  }
}

Проверяем только определённые свойства:

const newArr = arr.map(function(n) {
  return Object.fromEntries(Object
    .entries(n)
    .filter(([ k, v ]) => !this(k) || !isEmpty(v))
  );
}, Array.prototype.includes.bind([ 'optional' ]));
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы