Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用forEach在数组中循环遍历这些对象?_Javascript_Javascript Objects - Fatal编程技术网

Javascript 如何使用forEach在数组中循环遍历这些对象?

Javascript 如何使用forEach在数组中循环遍历这些对象?,javascript,javascript-objects,Javascript,Javascript Objects,我有一个数组,里面有一组对象,我如何循环遍历它们并检查哪一个对象的状态为true menuItems: [ { text1: 'Apple', status: false, subItems: [] }, { text2: 'Orange', status: false, subItems: [] }, { text3: 'Banana', status: true, subItems: [] } ]

我有一个数组,里面有一组对象,我如何循环遍历它们并检查哪一个对象的状态为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!!!')
}
例如:

const menuItems=[
{
文字:“苹果”,
状态:false,
分项:[]
},
{
文字:“橙色”,
状态:false,
分项:[]
},
{
文本:“香蕉”,
状态:正确,
分项:[]
}
];

menuItems.forEach(menuItem=>{if(menuItem.status){console.log(menuItem.text)})您有几个选项。在顶层,您可以向传递给
forEach
的函数添加if语句:

menuItems.forEach((item) => {
  if (item.status) {
    console.log('Do something') // only logs when item.status is true
  }
})
请注意,示例代码:
menuItems.forEach(active)==“false”)
即使在修复语法后也不会工作,因为在示例数据中,
状态是一个布尔值,您试图将其与
==“code>的字符串进行比较

回到主要问题:您可以使用
filter
方法首先删除任何状态不为true的项,而不是使用if语句:

menuItems.filter(item => item.status).forEach((item) => {
  // The filter function will remove any items where item.status is falsy,
  // leaving only items where status is true.
  console.log('Do something')
})

如果我是你,我会用过滤器<代码>让trueItems=menuItems.filter(item=>item.status)如果您想更进一步,请使用map
trueItems.map(item=>processForTrueItem(item))
这是要求您使用
forEach
的作业吗?这样做是可能的,但是
forEach
可能不是这项工作的最佳工具。是否保证只有一个
状态为
true
的项目,或者可能有几个项目?@Scott是的,可能有几个,这只是一个简短的示例。您是否还需要在任何
子项中找到
true
状态?那最好是递归处理。谢谢。非常详细的回答。这太棒了。非常感谢你。