differenceBy
用法
_.differenceBy(array, [values], [iteratee=_.identity])
功能
与_.difference相比,它多接收一个iteratee参数。暂且称之为迭代器。
demo
_.differenceBy([3.1, 2.2, 1.3], [4.4, 2.5], Math.floor);
源码
上两篇已经涉及过相关的代码,仍是在baseDifference
function baseDifference(array, values, iteratee, comparator) {
var index = -1,
includes = arrayIncludes,//方法。
isCommon = true,
length = array.length,
result = [],
valuesLength = values.length;
if (!length) {
return result;
}
if (iteratee) { // 迭代器函数。
values = arrayMap(values, baseUnary(iteratee)); // 这里提前处理下 while循环里边有个判段,这里提前就遍历,处理数据。
}
if (comparator) { //comparator存在,includes从arrayIncludes =》arrayIncludesWith,
includes = arrayIncludesWith;