2724. Сортировка по (Easy) (https://leetcode.com/problems/sort-by/)
Дан массив arr и функция fn, верните отсортированный массив sortedArr. Можно считать, что fn возвращает только числа, и эти числа определяют порядок сортировки sortedArr. sortedArr должен быть отсортирован по возрастанию значений, возвращаемых fn. Можно считать, что fn никогда не вернёт одинаковые числа для разных элементов массива. Ограничения: - arr — валидный JSON-массив - fn — функция, возвращающая число - 1 <= arr.length <= 5 * 10
type JSONValue = null | boolean | number | string | JSONValue[] | { [key: string]: JSONValue }
type Fn = (value: JSONValue) => number
function sortBy(arr: JSONValue[], fn: Fn): JSONValue[] {
arr.sort((a, b) => fn(a) - fn(b))
return arr
}
// Local check:
console.log(sortBy([5, 4, 1, 2, 3], (x) => x as number)) // [1, 2, 3, 4, 5]
console.log(sortBy([{ x: 1 }, { x: 0 }, { x: -1 }], (d) => (d as { x: number }).x)) // [{ x: -1 }, { x: 0 }, { x: 1 }]
console.log(
sortBy(
[
[3, 4],
[5, 2],
[10, 1],
],
(x) => (x as number[])[1],
),
) // [[10, 1], [5, 2], [3, 4]]Пример 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". Поэтому массив сортируется по этому значению.
Пример 3:
Вход: arr = [[3, 4], [5, 2], [10, 1]], fn = (x) => x[1]
Выход: [[10, 1], [5, 2], [3, 4]]
Объяснение:
arr сортируется по возрастанию значения по индексу=1.