Javascript 如何使用forEach在数组中循环遍历这些对象?
我有一个数组,里面有一组对象,我如何循环遍历它们并检查哪一个对象的状态为trueJavascript 如何使用forEach在数组中循环遍历这些对象?,javascript,javascript-objects,Javascript,Javascript Objects,我有一个数组,里面有一组对象,我如何循环遍历它们并检查哪一个对象的状态为true menuItems: [ { text1: 'Apple', status: false, subItems: [] }, { text2: 'Orange', status: false, subItems: [] }, { text3: 'Banana', status: true, subItems: [] } ]
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)代码>如果您想更进一步,请使用maptrueItems.map(item=>processForTrueItem(item))
这是要求您使用forEach
的作业吗?这样做是可能的,但是forEach
可能不是这项工作的最佳工具。是否保证只有一个状态为true
的项目,或者可能有几个项目?@Scott是的,可能有几个,这只是一个简短的示例。您是否还需要在任何子项中找到true
状态?那最好是递归处理。谢谢。非常详细的回答。这太棒了。非常感谢你。