[Easy] 手写 difference

2024年1月28日

💎 加入 E+ 成長計畫 與超過 350+ 位軟體工程師一同在社群中成長,並且獲得更多的軟體工程學習資源

题目描述

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+ 成长计划看到

解法一

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));
}
🧵 如果你想收到最即時的內容更新,可以在 FacebookInstagram 上追蹤我們