Sort Array of numeric & alphabetical elements (Natural Sort)

Suppose I have an array

var arr = [1,5,"ahsldk",10,55,3,2,7,8,1,2,75,"abc","huds"];

and I try sorting it, I get something like ...

[1, 1, 10, 2, 2, 3, 5, 55, 7, 75, 8, "abc", "ahsldk", "huds"]

notice 10 is before 2, how can I have something more like

[1,1,2,2,3,5 ..., "abc", "ahs...",...]
11
задан Phrogz 29 August 2012 в 02:13
поделиться

1 ответ

Вы могли сделать это в одной строке с помощью String.prototype.localCompare() и получить результат, который Вы ищете. Обратите внимание, что числовое сопоставление опция включена.

var arr = [1,5,"ahsldk",10,55,3,2,7,8,1,2,75,"abc","huds"];
arr.sort((a,b) => ("" + a).localeCompare(b, undefined, {numeric: true}));
console.log(arr);
// [1, 1, 2, 2, 3, 5, 7, 8, 10, 55, 75, "abc", "ahsldk", "huds"]

, Возможно, добавляют, что некоторая логика для обработки аннулирует.

0
ответ дан 3 December 2019 в 01:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: