如何在嵌套对象数组中筛选拥有指定技术的用户?
解决方案
你的代码问题在于e.technos是一个数组,直接访问e.technos.name会得到undefined,无法和目标技术名称做匹配。需要用数组方法检查技术列表中是否存在指定名称的项。
基础实现
使用Array.some()方法遍历用户的技术数组,只要有一项匹配目标名称,就将该用户保留在筛选结果中:
let filteredData = userData.filter(user => user.technos.some(tech => tech.name === data.name) );
大小写不敏感的匹配(可选)
如果需要忽略大小写的匹配,可以将两边的字符串统一转为小写(或大写)后再比较:
let targetTechName = data.name.toLowerCase(); let filteredData = userData.filter(user => user.technos.some(tech => tech.name.toLowerCase() === targetTechName) );
代码说明
filter():遍历用户数组,只保留满足条件的用户some():遍历用户的技术数组,只要存在任意一个技术项的name与目标名称匹配,就返回true,让当前用户通过筛选
内容的提问来源于stack exchange,提问作者Virgile J
相关产品推荐
相关产品推荐

