如何判断一个数组对象是否有值,然后返回具有该值的对象数组



如何判断数组对象是否有值,然后返回具有该值的对象数组。因为我是一个新手,我试着写它,但我没有,给一个例子:

const menu = [
{
title: "one",
children: [{name: "hello"}, {name: "bye"}],
},{
title: "two",
children: [{name: "good"}, {name: "bad"}],
},
]

假设输入"bad",结果应为:

menu = [
{
title: "two",
children: [{name: "good"}, {name: "bad"}],
}
]

怎么做?

循环遍历数组,然后过滤每个元素及其children,如下所示:

const menu=[{title:"one",children:[{name:"hello",},{name:"bye",},],},{title:"two",children:[{name:"good",},{name:"bad"}]}];
const filterName = toFilter => {
return menu.filter(({ children }) => {
return children.some(({ name }) => name == toFilter);
});
};
console.log(filterName("bad"));
console.log(filterName("good"));
console.log(filterName("neither"));
.as-console-wrapper { max-height: 100% !important; top: auto; }

作为初学者,不要沉迷于花哨的Array方法,而要使用简单的循环。尝试使用for loop来循环menu数组。然后,对于每个项目,循环遍历对象的children属性。如果name键与您想要的输出匹配,您可以将整个对象推入您的答案数组:

const menu = [
{
title: "one",
children: [
{
name: "hello",
},
{
name: "bye",
},
],
},
{
title: "two",
children: [
{
name: "good",
},
{
name: "bad",
},
],
},
]
let ans = [];
for(let i = 0 ; i < menu.length;i++){
if(menu[i].children){
for(let j = 0 ; j < menu[i].children.length; j++){
if(menu[i].children[j].name === 'bad') ans.push(menu[i]);
}
}
}
console.log(ans);

注意:上面假设children是一个数组。

最新更新