проверка свойства объекта с вложенным массивом объектов - PullRequest
0 голосов
/ 21 июня 2020

У меня есть объект, что-то вроде этого

var obj = {
  page: 6,
  total: 12,
  data: [
    {
      id: 1,
      email: "lawson@mail.com",
      last_name: "Larsen",
    },
    {
      id: 2,
      email: "howell@mail.com",
      last_name: "Holl",
    },
  ],
  ad: {
    company: "Weekly",
  },
};

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

var i = obj.data.length;
while (i--) {
  console.log(obj.data.hasOwnProperty("email"));
}

, но это не возвращает мне истину

Ответы [ 6 ]

0 голосов
/ 21 июня 2020

Для этого есть специальный метод массива. every

const response = {
  page: 6,
  total: 12,
  data: [
    {
      id: 1,
      email: "lawson@mail.com",
      last_name: "Larsen",
    },
    {
      id: 2,
      email: "howell@mail.com",
      last_name: "Holl",
    },
  ],
  ad: {
    company: "Weekly",
  },
};
const hasEmail = (item) => Boolean(item.email);

const everyItemHasEmail = response.data.every(hasEmail);

console.log(everyItemHasEmail)
0 голосов
/ 21 июня 2020
// Check all using loop For Each
obj.data.forEach( (item) => console.log( item.hasOwnProperty('email') ) );

// Check whether some objects in data have property 'email'
console.log( obj.data.some( (item) => item.hasOwnProperty('email') ) );

// Check whether every objects in data have property 'email'
console.log( obj.data.every( (item) => item.hasOwnProperty('email') ) );
0 голосов
/ 21 июня 2020

Считайте, что «данные» - это массив, мы можем oop просмотреть набор данных с помощью foreach , а затем найти свойство 'email'

var obj = {
  page: 6,
  total: 12,
  data: [
    {
      id: 1,
      email: "lawson@mail.com",
      last_name: "Larsen",
    },
    {
      id: 2,
      email: "howell@mail.com",
      last_name: "Holl",
    },
  ],
  ad: {
    company: "Weekly",
  },
};

obj.data.forEach(data => {
  console.log(data.hasOwnProperty('email'))
})
0 голосов
/ 21 июня 2020

вам необходимо получить доступ к каждому объекту в данных с помощью индекса ..

while (i--) {
    console.log(obj.data[i].hasOwnProperty('email')); 
}


0 голосов
/ 21 июня 2020

Для того, чтобы он работал, вы должны перебрать массив или получить доступ к некоторому индексу массива.

Ваш код будет:

console.log(obj.data[0].hasOwnProperty('email'));

Обратите внимание на доступ к нулевому индексу.

0 голосов
/ 21 июня 2020

вы можете сделать это, чтобы проверить, присутствует ли свойство электронной почты в массиве данных.

obj.data.some((obj)=>hasOwnProperty('email'))

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