Computer >> Máy Tính >  >> Lập trình >> Javascript

Sắp xếp số theo JavaScript gốc chữ số

Gốc chữ số

Gốc chữ số của một số nguyên dương được định nghĩa là tổng của tất cả các chữ số của nó.

Chúng tôi được yêu cầu viết một hàm JavaScript nhận một mảng các số nguyên. Hàm nên sắp xếp nó theo cách sao cho nếu a đứng trước b thì gốc chữ số của a nhỏ hơn hoặc bằng gốc chữ số của b. Nếu hai số có cùng gốc chữ số thì số nhỏ hơn (theo nghĩa thông thường) phải đứng trước.

Ví dụ:4 và 13 có cùng một gốc chữ số, tuy nhiên 4 <13 do đó 4 đứng trước 13 trong bất kỳ sắp xếp chữ số nào. Khi cả hai đều có mặt.

Ví dụ -

Nếu mảng đầu vào là -

const arr = [13, 20, 7, 4];

Sau đó, kết quả đầu ra phải là -

const output = [20, 4, 13, 7];

Ví dụ

const arr = [13, 20, 7, 4];
const digitSum = (num, sum = 0) => {
   if(num){
      return digitSum(Math.floor(num / 10), sum + (num % 10));
   };
   return sum;
};
const digitalSort = (arr = []) => {
   const sorter = (a, b) => {
      return (digitSum(a) - digitSum(b)) || (a - b);
   };
   arr.sort(sorter);
};
digitalSort(arr);
console.log(arr);

Đầu ra

Điều này sẽ tạo ra kết quả sau -

[ 20, 4, 13, 7 ]