我正在解决一个函数array_diff
返回数组中的值的问题,这些值a
也在数组中b
。
因为我一直在学习命名函数表达式比匿名胖箭头函数更适合控制台调试,所以我试图用命名removeDuplicate
函数来过滤我的数组来解决这个问题。
但是,我无法阻止过滤器函数自动从返回的数组中删除错误值 0。
命名函数表达式:
function array_diff(a, b) {
return a.filter(function removeDuplicate(x) { if(b.indexOf(x) == -1) return x; });
}
array_diff([0,1,2,3,4],[2,4]); // [1, 3]
匿名胖箭头功能:
function array_diffTwo(a, b) {
return a.filter((x) => { return b.indexOf(x) == -1 });
}
array_diffTwo([0,1,2,3,4],[2,4]); // [0, 1, 3]
有人可以向我解释为什么 falsey 值 0 被删除array_diff
而不是array_diffTwo
?