【问题标题】:Get filtered array by some with multiple conditions通过一些具有多个条件的过滤数组
【发布时间】:2021-01-26 19:58:49
【问题描述】:

这是我的数组的结构:-

projects数组:-

let projects = [
    {
        id: 1,
        name: 'Project 1',
        techs: [
            id: 1
            name: 'Tech 1'
        ]
    },
    {
        id: 2,
        name: 'Project 2',
        techs: [
            id: 1
            name: 'Tech 2'
        ]
    },
    {
        id: 3,
        name: 'Project 3',
        techs: [
            id: 1
            name: 'Tech 3'
        ]
    },
    {
        id: 4,
        name: 'Project 4',
        techs: [
            id: 1
            name: 'Tech 1'
        ]
    }
]

现在我能够仅获得 Tech 1 的过滤项目,如下所示:-

let filteredProjs = projects.filter(proj => proj.techs.some(tech => tech.name === 'Tech 1'))

我想获得过滤Tech name = 'Tech 1' & 'Tech 2'的项目。但是当我这样做时return我什么都没有,如下所示:-

let filteredProjs = projects.filter(proj => proj.techs.some(tech => tech.name === 'Tech 1' && tech.name === 'Tech 2'))

我该怎么做?

【问题讨论】:

    标签: arrays filter array-filter searchfiltercollection


    【解决方案1】:

    您可能需要尝试 OR 运算符 (||) 而不是 AND (&&)。

    在计算机编程中,AND 仅在双方的条件评估为 true 时才返回 true。 对于OR,如果任一侧的任一条件返回true,则计算结果为true

    在您的情况下,我假设您要过滤掉 Tech 名称等于“Tech 1”OR“Tech 2”的项目。

    【讨论】:

    • 奇怪的是,这有效!我想我需要做 && 以获得所有具有 Tech 1 AND Tech 2 技术的项目。但是通过这样做,它会像您所说的那样返回我false。无论如何,谢谢!
    • 这没什么奇怪的......这是基本的。我建议您从-javascript.info/logical-operators 阅读有关它的信息。它们在大多数编程语言中的工作方式相似。如果您认为上述答案是正确的,请随时投票并接受作为答案。否则,请随时提出如何改进的建议。
    猜你喜欢
    • 2021-07-05
    • 2019-03-02
    • 2019-11-20
    • 2020-05-10
    • 1970-01-01
    • 2023-03-31
    • 2021-03-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多