2724. Sort By
Tags
- JSON
Link
Question
Given an array
arr
and a functionfn
, return a sorted arraysortedArr
. You can assumefn
only returns numbers and those numbers determine the sort order ofsortedArr
.sortedArr
must be sorted in ascending order byfn
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 arrayfn
is a function that returns a number1 <= arr.length <= 5 * 10
5
Answer
JavaScript
/**
* @param {Array} arr
* @param {Function} fn
* @return {Array}
*/
var sortBy = function (arr, fn) {
return arr.sort((a, b) => fn(a) - fn(b));
};