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

Sắp xếp theo trọng số của số trong JavaScript


Trọng số của một số là tổng các chữ số của số đó. Ví dụ -

The weight of 100 is 1
The weight of 22 is 4
The weight of 99 is 18
The weight of 123 is 6

Chúng tôi được yêu cầu viết một hàm JavaScript nhận một mảng số. Hàm sẽ sắp xếp các số theo thứ tự tăng dần trọng lượng của chúng và nếu hai số có cùng trọng lượng, chúng sẽ được đặt theo thứ tự tăng dần.

Ví dụ -

50 và 23 có cùng trọng lượng, vì vậy 23 nên đặt trước 50 để duy trì thứ tự tăng dần (chỉ trong trường hợp các trọng lượng bằng nhau)

Ví dụ

Mã cho điều này sẽ là -

const arr = [2, 1, 100, 56, 78, 3, 66, 99, 200, 46];
const calculateWeight = (num, sum = 0) => {
   if(num){
      return calculateWeight(Math.floor(num / 10), sum + (num % 10));
   };
   return sum;
};
const sorter = (a, b) => {
   return calculateWeight(a) − calculateWeight(b) || a − b;
}
arr.sort(sorter);
console.log(arr);

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

[
   1, 100, 2, 200, 3,
   46, 56, 66, 78, 99
]