JavaScript两数组求差异问题求助(代码未达预期结果)
问题分析与解决
你的代码存在两个关键问题,导致无法得到预期结果:
- 内层
filter没有返回值,且外层filter的回调函数未利用内层计算结果,最终外层回调默认返回undefined(等价于false),所以difference始终是空数组。 - 逻辑判断错误:要筛选出
selectedStores中不存在于alreadySyncedStores任何子数组的元素,应该用every判断该元素是否在所有子数组中都不存在,而非嵌套filter。
修正后的代码
let difference = selectedStores.filter(selectedStore => { // 检查当前selectedStore是否在alreadySyncedStores的所有子数组中都不存在 return alreadySyncedStores.every(productSyncedStores => { return !productSyncedStores.includes(selectedStore); }); }); console.log('>>>difference<<<', difference);
代码说明
- 使用
every遍历alreadySyncedStores的每个子数组,只有当当前selectedStore在所有子数组中都不存在时,every才返回true,该元素会被保留到difference中。 - 确保每层回调都有明确返回值,让
filter能正确完成筛选逻辑。
内容的提问来源于stack exchange,提问作者Ibrahim Hammoud
相关产品推荐
相关产品推荐

