检查具有嵌套对象数组的对象的属性

时间:2020-06-21 15:33:25

标签: javascript node.js object

我有一个东西,像这样

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 :(得分:0)

您可以执行此操作以检查数据数组中是否存在电子邮件属性。

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

答案 1 :(得分:0)

要使其正常工作,您必须遍历数组或访问某些数组索引。

您的代码应为:

$i

请注意零索引访问。

答案 2 :(得分:0)

您需要使用索引访问数据中的每个对象。

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


答案 3 :(得分:0)

考虑“数据”是一个数组,我们可以使用 foreach 遍历数据集,然后找到“电子邮件”属性

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'))
})

答案 4 :(得分:0)

// 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') ) );

答案 5 :(得分:0)

为此目的有一种特殊的数组方法。 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)