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