Array Filter未调用去重辅助函数的问题及解决咨询
数组过滤去重的问题修复
问题根源
你在使用filter方法时犯了一个关键错误:filter需要传入一个回调函数,但你直接写了!checkForDuplicate(item, searchToSave)——这是一个立即执行的表达式(而且此时item未定义),不是会被filter调用的回调。所以checkForDuplicate函数根本没被正确触发,console.log自然不会执行。
正确写法
你需要用箭头函数把checkForDuplicate包装成filter的回调,让filter遍历数组时,把每个元素作为参数传入:
case ON_SET_RECENT_SEARCH: { const searchToSave = action.payload; const filteredSearches = state.recentSearches.filter(item => checkForDuplicate(item, searchToSave) ); return { ...state, recentSearches: [...filteredSearches, searchToSave] // 按需调整,通常需将新搜索项加入结果 }; }
补充说明
你的checkForDuplicate函数逻辑是对的:它返回!isDuplicate,也就是让filter保留非重复的元素,符合去重需求。如果后续发现去重逻辑不符合预期,再调整isDuplicate的判断条件即可。
内容的提问来源于stack exchange,提问作者Bomber
相关产品推荐
相关产品推荐

