Express.js中filterByQuery函数查询动物数据的功能原理咨询
解析 filterByQuery 函数的工作机制
这个函数的核心作用是根据传入的查询参数,从动物数据数组中筛选出匹配的条目,具体工作流程如下:
- 初始赋值:首先把完整的动物数组
animalsArray赋值给filteredResults,此时结果集包含所有动物的数据。 - 按饮食类型筛选:如果查询参数
query包含diet属性,就用数组的filter方法,只保留饮食类型和query.diet完全匹配的动物,更新filteredResults为筛选后的数组。 - 按物种筛选:同理,如果
query里有species属性,对当前的filteredResults再次筛选,只保留物种匹配的动物。 - 按名称筛选:如果
query里有name属性,最后一次筛选出名称完全匹配的动物。 - 返回结果:经过所有符合条件的筛选后,返回最终的结果数组。
关键细节说明
- 多个查询参数会叠加生效:比如同时传入
diet=Carnivore和species=Cat,函数会先筛选出食肉动物,再从中找出猫科动物,返回同时满足两个条件的结果。 - 筛选是严格匹配:
===运算符要求属性值和查询参数完全一致(区分大小写、数据类型),比如查询name=lion不会匹配名称为Lion的动物。
示例演示
假设动物数组如下:
const animalsArray = [ { name: 'Lion', species: 'Cat', diet: 'Carnivore' }, { name: 'Deer', species: 'Deer', diet: 'Herbivore' }, { name: 'Tiger', species: 'Cat', diet: 'Carnivore' } ];
- 当传入
query={diet: 'Carnivore'},返回[Lion, Tiger]; - 当传入
query={species: 'Cat', name: 'Lion'},返回[Lion]。
内容的提问来源于stack exchange,提问作者Christian Rangel
相关产品推荐
相关产品推荐

