Javascript 按对象布尔属性的嵌套数组筛选对象数组

Javascript 按对象布尔属性的嵌套数组筛选对象数组,javascript,Javascript,在上面的Person对象数组中,我有一个项的数组对象,其属性可见。我正在尝试根据可见的字段过滤Person对象:true或false。过滤后的Person对象的items对象数组也将仅包含true或false。我怎样才能做到这一点 我试过: 我试过: const Person = [ { firstname: "john", lastname: "doe", items: [ { vi

在上面的
Person
对象数组中,我有一个
项的数组
对象,其属性
可见
。我正在尝试根据
可见的
字段过滤
Person
对象:
true
false
。过滤后的Person对象的items对象数组也将仅包含true或false。我怎样才能做到这一点

我试过:

我试过:

const Person = [
    {
        firstname: "john",
        lastname: "doe",
        items: [
            {
                visible: true,
                foo: "bar"
            },
            {
                visible: false,
                foo: "bar"
            }
        ]
    },
        {
        firstname: "jane",
        lastname: "doe",
        items: [
            {
                visible: false,
                foo: "bar"
            }
        ]
    },
    {
        firstname: "john",
        lastname: "adam",
        items: [
            {
                visible: true,
                foo: "bar"
            },
            {
                visible: false,
                foo: "bar"
            }
        ]
    },
]
使用

const Person=[{firstname:“约翰”,lastname:“多伊”,items:[{visible:true,foo:bar}},{firstname:“简”,lastname:“多伊”,items:[{visible:false,foo:bar}},{firstname:“约翰”,lastname:“亚当”,items:[{visible:true,foo:bar}];
//筛选Person数组中至少有一个可见项的所有对象
const result=Person.filter(v=>v.items.some(o=>o.visible));
控制台日志(结果)使用

const Person=[{firstname:“约翰”,lastname:“多伊”,items:[{visible:true,foo:bar}},{firstname:“简”,lastname:“多伊”,items:[{visible:false,foo:bar}},{firstname:“约翰”,lastname:“亚当”,items:[{visible:true,foo:bar}];
//筛选Person数组中至少有一个可见项的所有对象
const result=Person.filter(v=>v.items.some(o=>o.visible));
控制台日志(结果)单个
filter()
在这里就足够了。由于项中的visible属性位于0索引,因此可以使用该索引:

const Person=[{firstname:“约翰”,lastname:“多伊”,items:[{visible:true,foo:bar}},{firstname:“简”,lastname:“多伊”,items:[{visible:false,foo:bar}},{firstname:“约翰”,lastname:“亚当”,items:[{visible:true,foo:bar}];
常量filteredPerson=Person.filter(Person=>Person.items[0]。可见)
控制台日志(filteredPerson)单个
filter()
在这里就足够了。由于项中的visible属性位于0索引,因此可以使用该索引:

const Person=[{firstname:“约翰”,lastname:“多伊”,items:[{visible:true,foo:bar}},{firstname:“简”,lastname:“多伊”,items:[{visible:false,foo:bar}},{firstname:“约翰”,lastname:“亚当”,items:[{visible:true,foo:bar}];
常量filteredPerson=Person.filter(Person=>Person.items[0]。可见)


控制台日志(filteredPerson)发布的问题似乎根本不包含解决问题的方法。StackOverflow希望您能这样做,因为您的尝试有助于我们更好地了解您的需求。请编辑问题以显示您已尝试的内容,以便说明您遇到的具体障碍。有关详细信息,请参阅并获取。请添加您的输入和预期输出。发布的问题似乎根本不包含解决问题的方法。StackOverflow希望您能这样做,因为您的尝试有助于我们更好地了解您的需求。请编辑问题以显示您已尝试的内容,以便说明您遇到的具体障碍。有关更多信息,请参阅并获取。请添加您的输入和预期输出。如果它不在第一个索引上怎么办?谢谢。如果我只想根据
true
false
筛选items数组,你的意思是只获取item而不是其他属性作为结果吗?是的,只是每个属性对象中的items数组,但仍然按true/false筛选。@ZeroDarkThirty,那么你必须使用
map()
仅返回项目。。更新了第二个答案…请检查。如果它不在第一个索引上怎么办?谢谢。如果我只想根据
true
false
筛选items数组,你的意思是只获取item而不是其他属性作为结果吗?是的,只是每个属性对象中的items数组,但仍然按true/false筛选。@ZeroDarkThirty,那么你必须使用
map()
仅返回项目。。更新了第二个答案…请检查。我已经用另一个场景更新了我的问题。现在,项有多个对象,每个对象都可见true或false。我现在如何按真或假筛选人员?在这种情况下,
some
不会筛选返回的筛选人员数组中的项目数组。这仅适用于
true
项目。如何处理
false
?@ZeroDarkThirty-是否只过滤对象中所有项为true或false的值?@ZeroDarkThirty-这也意味着在上面发布的示例中,生成的数组将只有1个元素,其中项只有1个条目。由于数组中的其他2个元素将被忽略,因为在每个项数组中,都有一个正确和错误的混合项。我用另一个场景更新了我的问题。现在,项有多个对象,每个对象都可见true或false。我现在如何按真或假筛选人员?在这种情况下,
some
不会筛选返回的筛选人员数组中的项目数组。这仅适用于
true
项目。如何处理
false
?@ZeroDarkThirty-是否只过滤对象中所有项为true或false的值?@ZeroDarkThirty-这也意味着在上面发布的示例中,生成的数组将只有1个元素,其中项只有1个条目。由于数组中的其他2个元素将被忽略,就像在每个items数组中一样,存在true和false混合条目
const filteredPerson = Person.filter(person => {
    person.items.filter(item => item.visible === true)
})