LeetCode //2724. Sort By (Day 30 of LC JavaScript Challenage)

给定一个数组arr和一个函数fn,返回按fn输出排序的sortedArr。fn返回的数字决定sortedArr的排序顺序,要求sortedArr按fn输出的升序排列。可以使用Array.sort()方法,传入一个比较器函数,该函数通过fn(a)-fn(b)来实现升序排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2724. Sort By

Given an array arr and a function fn, return a sorted array sortedArr. You can assume fn only returns numbers and those numbers determine the sort order of sortedArr. sortedArray must be sorted in ascending order by fn output.

You may assume that fn will never duplicate numbers for a given array.

 

Example 1:

Input: arr = [5, 4, 1, 2, 3], fn = (x) => x
Output: [1, 2, 3, 4, 5]
Explanation: fn simply returns the number passed to it so the array is sorted in ascending order.

Example 2:

Input: arr = [{“x”: 1}, {“x”: 0}, {“x”: -1}], fn = (d) => d.x
Output: [{“x”: -1}, {“x”: 0}, {“x”: 1}]
Explanation: fn returns the value for the “x” key. So the array is sorted based on that value.

Example 3:

Input: arr = [[3, 4], [5, 2], [10, 1]], fn = (x) => x[1]
Output: [[10, 1], [5, 2], [3, 4]]
Explanation: arr is sorted in ascending order by number at index=1.

Constraints:
  • arr is a valid JSON array
  • fn is a function that returns a number
  • 1 < = a r r . l e n g t h < = 5 ∗ 1 0 5 1 <= arr.length <= 5 * 10^5 1<=arr.length<=5105

From: LeetCode
Link: 2724. Sort By


Solution:

Ideas:
We use Array.sort() to sort the array. We pass a comparator function that subtracts the result of fn(a) from fn(b). This will sort in ascending order since subtracting smaller from larger gives a negative number.
Code:
/**
 * @param {Array} arr
 * @param {Function} fn
 * @return {Array}
 */
var sortBy = function(arr, fn) {
    return arr.sort((a, b) => fn(a) - fn(b));
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Navigator_Z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值