【问题标题】:How to filter values of an array inside an array?如何过滤数组内的数组值?
【发布时间】:2021-11-06 06:09:03
【问题描述】:

为了更清楚,我将描述这种情况。我有一个数组 像这样

animalsArray = {
animalID : number,
animalName: string,
animalDescription: string,

animalChild: animalsArray[]

}

现在我必须使用 animalName 从文本字段的用户输入中过滤这些动物。有些动物可以有 n 个animalChild 或根本没有,或者animalChild 可以在其中有另一个animalChild

我已经有这样的代码

public animalsArray:animalsArray[]

    this.filteredanimalsArray.next(
                this.animalsArray.filter(item => (item.animalName.toLowerCase().indexOf(search) > -1))
            );

过滤主要的animalsArray,它工作正常,但用户输入不通过子数组。

我该如何解决这个问题?提前致谢

【问题讨论】:

  • 感谢您指出这一点。将编辑帖子

标签: javascript arrays angular typescript filter


【解决方案1】:

也许你可以像这样使用递归:

function filterAnimals(animals, name) {
    return animals.filter(animal => {
        const matching = animal.animalName.toLowerCase() === name.toLowerCase();
        const hasChildMatch = Array.isArray(animal.animalChild) && filterAnimals(animal.animalChild, name).length > 0;
        return matching || hasChildMatch;
    });
}

const search = 'leon';
const filterdAnimals = filterAnimals(animalsArray, search);

【讨论】:

    猜你喜欢
    • 2022-11-19
    • 1970-01-01
    • 1970-01-01
    • 2016-11-03
    • 1970-01-01
    • 2021-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多