[Easy] 手写 difference
2024年1月28日
💎 加入 E+ 成長計畫 如果你喜歡我們的內容,歡迎加入 E+,獲得更多深入的軟體前後端內容
题目描述
Lodash 的 difference
是开发中经常被用的效用函式,也经常会在面试被问到。 difference
会接说两个数组,并回传第一个数组中独有的元素,减少对重复值的不必要操作。
difference([], []); // []
difference([1, 1, 2, 3], [2, 3]); // [1, 1]
difference([1, 2, 3], [1, 2, 3, 4]); // []
difference([4, 3, 2, 1], [1, 2, 3]); // [4]
本题解答
以下是本题的解答,详细解题思路可以在 E+ 成长计划看到。如果想练习更多题目,推荐可以到 GreatFrontEnd 上练习。
解法一
function difference(array, values) {
const result = [];
for (const element of array) {
if (values.includes(element) === false && element !== undefined) {
result.push(element);
}
}
return result;
}
解法二
function difference(array, values) {
const valuesSet = new Set(values);
return array.filter((value) => !valuesSet.has(value));
}