javascript - 如何过滤数组内的数组值?
问题描述
为了更清楚,我将描述这种情况。我有一个这样的数组
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
,它工作正常,但用户输入不通过子数组。
我怎么解决这个问题?提前致谢
解决方案
也许你可以像这样使用递归:
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);
推荐阅读
- c - 如何在 Glade 中添加个人图标而不污染层次结构
- python - 无法选择python版本
- html - 如何链接超过两个目录的css文件
- asp.net-core - Identity Server 4 SignInAsync 中的附加LocalClaims 的目的是什么
- hibernate - MultiTenant Hibernate + Spring boot - 如何防止它在服务器启动期间查找连接
- python-3.x - Python如何让操作系统阻止进程并按计时器恢复
- python - 使用 on_touch_up 从下拉菜单选项中实例化数据类
- android-studio - 如何在 MacOS 上的 Android Studio 中为编辑器启用自动换行
- ruby-on-rails - 尝试使用 API 时 nil:NilClass 的未定义方法“[]”
- python-3.7 - Riviera PRO 和 cocotb 可能存在的错误(找不到 libcocotbvhpi.dll')