系列章節前端手寫題

[Easy] 手寫 difference

2024年1月28日

重點摘要

Lodash 的 `difference` 是開發中經常被用的效用函式,也經常會在面試被問到。 `difference` 會接說兩個陣列,並回傳第一個陣列中獨有的元素,減少對重複值的不必要操作。

題目描述

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));
}
E+ 會員方案

獲得更完整深入的專屬內容

如果你喜歡 ExplainThis 分享的內容,歡迎加入 E+ 會員

除了專屬的文章、影片、社群,也支持 ExplainThis 持續創作