跳到主要内容

differenceBy

2024年06月17日
柏拉文
越努力,越幸运

一、认识


这个方法类似_.difference ,除了它接受一个 iteratee (注:迭代器), 调用array 和 values 中的每个元素以产生比较的标准。 结果值是从第一数组中选择。iteratee 会调用一个参数:(value)。(注:首先使用迭代器分别迭代array 和 values中的每个元素,返回的值作为比较值)。

二、语法


三、实现


function differenceBy(array, ...values) {
const otherArray = values.slice(0, values.length - 1);
const stringOrFunc = values[values.length - 1];
let iteratee;
if (typeof stringOrFunc === "string") {
iteratee = function (item) {
return item[stringOrFunc];
};
} else {
iteratee = stringOrFunc;
}
const otherArrayMerge = otherArray.reduce((prev, curr) => {
return prev.concat(curr.map((item) => iteratee(item)));
}, []);
return array.filter((item) => {
return !otherArrayMerge.includes(iteratee(item));
});
}

console.log(differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor));