我如何使用forEach在数组内遍历这些对象?

时间:2019-05-14 20:01:35

标签: javascript javascript-objects

我有一个数组,内部有一组对象,如何遍历它们并检查哪个对象的状态为true?

menuItems: [
  {
    text1: 'Apple',
    status: false,
    subItems: []
  },
  {
    text2: 'Orange',
    status: false,
    subItems: []
  },
  {
   text3: 'Banana',
    status: true,
    subItems: []
  }
]

我尝试过这样的事情:-

if(menuItems.forEach(active) === 'false') {
then('do something!!!')
}

2 个答案:

答案 0 :(得分:1)

您有两种选择。在顶层,您可以在传递给forEach的函数中添加if语句:

menuItems.forEach((item) => {
  if (item.status) {
    console.log('Do something') // only logs when item.status is true
  }
})

请注意,即使在修复语法后,示例代码menuItems.forEach(active) === 'false')也无法正常工作,因为示例数据中的status是布尔值,并且您尝试将其与带有{的字符串进行比较{1}}。

尽管如此,回到主要问题:您可以使用===方法首先删除所有的状态为true的项目,而不是使用if语句:< / p>

filter

答案 1 :(得分:0)

一个例子:

const menuItems = [
  {
    text: 'Apple',
    status: false,
    subItems: []
  },
  {
    text: 'Orange',
    status: false,
    subItems: []
  },
  {
   text: 'Banana',
    status: true,
    subItems: []
  }
];

menuItems.forEach(menuItem => { if(menuItem.status) { console.log(menuItem.text) } });

阅读MDN!

https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach