题目详情:
给定一个数组 arr 和一个函数 fn,返回一个排序后的数组 sortedArr。你可以假设 fn 只返回数字,并且这些数字决定了 sortedArr 的排序顺序。sortedArr 必须按照 fn 的输出值 升序 排序。
你可以假设对于给定的数组,fn 不会返回重复的数字。
示例:
输入:arr = [5, 4, 1, 2, 3], fn = (x) => x
输出:[1, 2, 3, 4, 5]
解题思路:
题目要求根据给定的数组 arr 和函数 fn,返回一个按照 fn 函数输出值升序排序的新数组 sortedArr。可以假设 fn 只返回数字,并且这些数字决定了 sortedArr 的排序顺序。
使用数组的 sort 方法,传入一个比较函数 (a, b) => fn(a) - fn(b)。该比较函数通过调用 fn 函数获取 a 和 b 的输出值,并按照升序排序。
最终返回排序后的新数组 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;
// 调用函数并输出结果
console.log(sortByFn(arr, fn));