題目詳(xiang)情:
給定(ding)一(yi)個(ge)數(shu)組 arr 和一(yi)個(ge)函數(shu) fn,返(fan)回(hui)一(yi)個(ge)排(pai)序(xu)后的數(shu)組 sortedArr。你可以假(jia)設 fn 只返(fan)回(hui)數(shu)字,并且這些(xie)數(shu)字決定(ding)了 sortedArr 的排(pai)序(xu)順序(xu)。sortedArr 必須按(an)照 fn 的輸出值 升(sheng)序(xu) 排(pai)序(xu)。
你可以假設對于給定的(de)數組(zu),fn 不(bu)會返(fan)回(hui)重(zhong)復的(de)數字。
示(shi)例:
輸入:arr = [5, 4, 1, 2, 3], fn = (x) => x
輸出(chu):[1, 2, 3, 4, 5]
解題思路:
題目要求根據給定的數(shu)組 arr 和(he)函(han)(han)數(shu) fn,返(fan)回一個按照 fn 函(han)(han)數(shu)輸出值升序(xu)(xu)排序(xu)(xu)的新(xin)數(shu)組 sortedArr。可(ke)以假設 fn 只返(fan)回數(shu)字,并且這(zhe)些數(shu)字決(jue)定了 sortedArr 的排序(xu)(xu)順序(xu)(xu)。
使用(yong)數(shu)(shu)組的(de) sort 方法,傳入一個比較函(han)數(shu)(shu) (a, b) => fn(a) - fn(b)。該比較函(han)數(shu)(shu)通過調用(yong) fn 函(han)數(shu)(shu)獲取 a 和 b 的(de)輸(shu)出值,并按照升序排(pai)序。
最終返回排序后的新數組 sortedArr。
代碼實現:
function sortByFn(arr, fn) {
return arr.sort((a, b) => fn(a) - fn(b));
}
// 示例輸入
const arr = [5, 4, 1, 2, 3];
const fn = (x) => x;
// 調用函數(shu)并輸出(chu)結果(guo)
console.log(sortByFn(arr, fn));