Trọng số của một số là tổng các chữ số của số đó. Ví dụ:
Trọng số của 100 là 1 Trọng số của 22 là 4 Trọng số của 99 là 18 Trọng số của 123 là 6
Chúng ta cần viết một hàm JavaScript nhận vào một mảng các số. Hàm nên sắp xếp các số theo thứ tự tăng dần của trọng số của chúng, và nếu hai số có cùng trọng số, chúng nên được đặt theo thứ tự tăng dần thực tế.
Ví dụ: 50 và 23 có cùng trọng số, nên 23 nên được đặt trước 50 để duy trì thứ tự tăng dần thực tế (chỉ trong trường hợp trọng số bằng nhau).
Ví dụ
Code cho việc 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) => calculateWeight(a) - calculateWeight(b) || a - b;
arr.sort(sorter);
console.log(arr);Kết quả
Kết quả hiển thị trong console sẽ là:
[ 1, 100, 2, 200, 3, 46, 56, 66, 78, 99 ]