как узнать, является ли объект пустым, неопределенным или нулевым в угловом - PullRequest
0 голосов
/ 10 июня 2019

У меня есть .json, который приходит в следующей форме: data [0 ... n], где в каждой позиции есть объект со следующей формой:

{foto1, foto2, foto3 ... fotoN}

Вот картинка для вас, чтобы увидеть, как JSON приходит ко мне:

добавить фото, где вы можете увидеть файл json

. некоторые приходят со значением, но другие приходят так:

photo1:    

то есть он не указывает, по крайней мере, если он пустой, как строка вроде этой: "", то когда я пытаюсь спросить, если она пуста, она не работает для меня, что это значит, что это пустой? также проверьте, является ли оно неопределенным или нулевым и ни того, ни другого.

Ответы [ 2 ]

0 голосов
/ 11 июня 2019

Вы можете отфильтровать свойства, которые не имеют значений

const nonEmptyProps = obj => Object.keys(obj).reduce((result, prop) => {
  const value = obj[prop];
  if (value) {
    result[prop] = value;
  }
  return result;
}, {});

console.log(
  nonEmptyProps(
    {
      prop1: 'has value',
      prop2: null,
      prop3: 'another value',
      prop4: undefined,
      prop5: ''
    }
  )
);

Используйте его на карте при вызове API для замены объекта данных

http.get('api url').map(form => ({ ...form, data: nonEmptyProps(form.data) }));
0 голосов
/ 11 июня 2019

Вы должны проверить определение логических операторов в JS:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators

Логическое НЕ (!):

Следующий кодпоказывает примеры!(логический оператор NOT).

n1 = !true               // !t returns false
n2 = !false              // !f returns true
n3 = !''                 // !f returns true
n4 = !'Cat'              // !t returns false

Удвоение NOT (!!):

Можно последовательно использовать несколько операторов NOT для явного форсированияпреобразование любого значения в соответствующий логический примитив.Преобразование основано на «истинности» или «ложности» значения (см. «Истина и ложь»).

Такое же преобразование можно выполнить с помощью булевой функции.

n1 = !!true                   // !!truthy returns true
n2 = !!{}                     // !!truthy returns true: any object is truthy...
n3 = !!(new Boolean(false))   // ...even Boolean objects with a false .valueOf()!
n4 = !!false                  // !!falsy returns false
n5 = !!""                     // !!falsy returns false
n6 = !!Boolean(false)         // !!falsy returns false

Специальнона ваш случай:

!data[n].photo //will truthy for 'null, 'undefined' and an empty string

!!data[n].photo //will falsey for 'null, 'undefined' and an empty string
...