Javascript сортировать массив по кратчайшему расстоянию от номера - PullRequest
0 голосов
/ 29 апреля 2020

Мне нужно отсортировать элементы массива так, чтобы элемент, ближайший к числу, шел первым, а дальний - последним.

Например,

let arr = [1,16,14,13,6,7,4,5,3,2,19,20,10,4,6]
let number = 10

resultArray should be [10, 13, 7, 14, 6, 6, 5, 16,4, 4, 3, 2, 19, 1, 20];

Заранее спасибо .

Ответы [ 2 ]

5 голосов
/ 29 апреля 2020

Сортировать по расстоянию до number, где расстояние - абсолютная разница между двумя числами:

let arr = [1,16,14,13,6,7,4,5,3,2,19,20,10,4,6]
let number = 10

const distance = (a, t) => Math.abs(t - a);
arr.sort((a, b) => distance(a, number) - distance(b, number));
console.log(arr);
3 голосов
/ 29 апреля 2020

Просто используйте метод .sort() с Math.abs.

let arr = [1, 16, 14, 13, 6, 7, 4, 5, 3, 2, 19, 20, 10, 4, 6]
let number = 10

let sortByShortestDistance = (arr, number) => arr.sort((a, b) => Math.abs(a - number) - Math.abs(b - number))

console.log(sortByShortestDistance(arr, number))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...