React Native如何筛选数组得到餐厅提供的食品分类?
问题解决
报错原因
includes是数组类型的原生方法,你代码中调用includes的主体item.id是数字类型,本身不存在该方法,同时判断逻辑颠倒:你需要判断的是「餐厅支持的分类ID数组」中是否包含当前遍历的分类ID,而非反过来判断分类ID是否包含餐厅的分类数组。
正确实现
直接调整判断逻辑即可,代码如下:
const offeredCategories = categoryData.filter((item) => selectedRestaurant.categories.includes(item.id))
如果后续数据量较大,还可以提前把餐厅的分类ID转成Set提升查询性能:
// 转Set后查询时间复杂度从O(n)降到O(1),适合数据量较大的场景 const categoryIdSet = new Set(selectedRestaurant.categories) const offeredCategories = categoryData.filter((item) => categoryIdSet.has(item.id))
以上两种写法最终返回的offeredCategories数组都会只包含Burger和Drinks两个符合要求的分类项。
内容的提问来源于stack exchange,提问作者kartoffelkiste
相关产品推荐
相关产品推荐

