Сортировать по Di git по длине, затем по самому номеру - PullRequest
0 голосов
/ 09 июля 2020

Как отсортировать массив целых чисел по их длине di git в порядке убывания, а затем уравнять связи путем сортировки чисел с одинаковой длиной di git в порядке возрастания.

Примеры

digitSort([77, 23, 5, 7, 101])
➞ [101, 23, 77, 5, 7]

digitSort([1, 5, 9, 2, 789, 563, 444])
➞ [444, 563, 789, 1, 2, 5, 9]

digitSort([53219, 3772, 564, 32, 1])
➞ [53219, 3772, 564, 32, 1]

Я пытался написать свою функцию сортировки, но это не помогло! Пожалуйста, помогите

Ответы [ 3 ]

2 голосов
/ 09 июля 2020

Это код, если они имеют одинаковую длину, просто верните меньший, иначе верните самый длинный.

function digitSort(arr){
  return arr.sort((a,b) => {
    if(a.toString().length !== b.toString().length) {
      return b.toString().length - a.toString().length;
    }
    return a - b;
  })
}
1 голос
/ 09 июля 2020

Численный подход использует логарифм 10 как di git count.

const digitSort = array => array.sort((a, b) =>
    Math.floor(Math.log10(Math.abs(b))) - Math.floor(Math.log10(Math.abs(a))) ||
    a - b
);

console.log(digitSort([77, 23, 5, 7, 101]));         // [101, 23, 77, 5, 7]
console.log(digitSort([1, 5, 9, 2, 789, 563, 444])); // [444, 563, 789, 1, 2, 5, 9]
console.log(digitSort([53219, 3772, 564, 32, 1]));   // [53219, 3772, 564, 32, 1]
0 голосов
/ 23 июля 2020
const digitSort = arr => arr.sort((a, b) => String(b).length - String(a).length || a - b)

console.log(digitSort([77, 23, 5, 7, 101]))                    //[101, 23, 77, 5, 7] 
console.log(digitSort([9, 667, 87, 56, 3023, 5555, 111]))      //[3023, 5555, 111, 667, 56, 87, 9]
```
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...