Задача на Codewars: Sorting by bits

Решаю задачу по JS на codewars (ссылка: https://www.codewars.com/kata/59fa8e2646d8433ee200003f/train/javascript).

Мой код:

function sortByBit(arr) {
  function countDigits(cd) {
    let sum = 0;
    for (let i = 0; i < cd.length; i++) {
      sum += parseInt(cd[i]);
    }
    return sum;
  }
  return arr.sort((a, b) => a - b).sort((a, b) => {
    return countDigits(parseInt(a).toString(2)) - countDigits(parseInt(b).toString(2));
  });

}

Тестил код в консоле VScode и консоли браузера Chrome. Результат: решение правильное. Но почему-то, при тестировании решения на codewars выходит ошибка, решение неверно.

Expected: [0, 2, 2, 4, 8, 8, 3, 5, 5, 6, 9, 7, 56], instead got: [0, 2, 4, 2, 8, 8, 3, 6, 9, 5, 5, 7, 56].

В консоли VSCode и Chrome у меня выходит правильный результат: [0, 2, 2, 4, 8, 8, 3, 5, 5, 6, 9, 7, 56].

В чем может быть причина?


Ответы (1 шт):

Автор решения: Qwertiy

Два последовательных вызова sort - фигня, потому что js не гарантирует стабильную сортировку.

→ Ссылка