[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));
}