[Easy] LeetCode JS 30 - 2724. Sort By (依据排序)

2024年3月8日

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

LeetCode 30 Days of JavaScript

本题来自 LeetCode 的 30 天 JacaScript 挑战

2724. Sort By (依据排序)

题目描述

给定一个阵列 arr 和一个函式 fn,回传一个排序后的阵列 sortedArr。可以假设 fn 只回传数字,而这些数字决定了sortedArr 的排序顺序。sortedArr 必须按照 fn 的输出值升幂排序。

可以假设对于给定的阵列,fn 不会传回重复的数字。

// 范例 1
输入: arr = [5, 4, 1, 2, 3], fn = (x) => x
输出: [1, 2, 3, 4, 5]
解释: fn 只是传回传入的数字,因此阵列按升幂排序。

// 范例 2
输入: arr = [{"x": 1}, {"x": 0}, {"x": -1}], fn = (d) => d.x
输出: [{"x": -1} , {"x": 0}, {"x": 1}]
解释: fn 传回 "x" 键的值,因此阵列会根据该值排序。

本题解答

以下是本题的解答,详细解题思路可以在 E+ 成长计划看到。如果想练习更多题目,推荐可以到 GreatFrontEnd 上练习

解法一

function sortBy(arr, fn) {
  return arr.sort((a, b) => {
    const fnResultA = fn(a);
    const fnResultB = fn(b);

    // Ascending order:
    return fnResultA - fnResultB;
  });
}

解法二

function sortBy(arr, fn) {
  return arr.sort((a, b) => fn(a) - fn(b));
}
🧵 如果你想收到最即時的內容更新,可以在 FacebookInstagram 上追蹤我們