这是代码
var diffArray = function(a, b) {
return b.filter(function(value) { return a.indexOf(value) === -1; });
};
输入是:
diffArray([1, "3", 3, "4"], [1, "1", 3, 4]);
我不明白为什么它会返回:["1", 4]
请你澄清一下。
答案 0 :(得分:0)
解释一些事情:
Array.indexOf方法是一种在数组中搜索特定元素的方法,如果找到该元素则返回该元素的索引。如果没有,则返回-1。
Array.filter接收回调函数。对于数组的每个元素,这个回调函数被调用一次,如果元素应该出现在过滤结果中,它应该返回true,如果它不应该出现,则返回false。
示例:[1, 2, 3].filter(function(value) { return value < 3 });
将返回[1, 2]
。
所以你将2个数组传递给diffArray。正在过滤b数组,过滤器函数在数组中搜索b数组的每个元素,并返回数组中不存在的b数组的每个元素(每个元素都有indexOf === -1);
所以b元素是[1, "1", 3, 4]
。让我们一步一步地看一下:
我希望现在更清楚。