Vấn đề
Chúng tôi bắt buộc phải viết một hàm JavaScript lấy một mảng các số nguyên dương, arr, làm đối số đầu tiên và duy nhất.
Hàm của chúng ta nên sắp xếp mảng đầu vào theo cách sao cho số có tổng chữ số cao nhất đứng đầu sau các số có tổng chữ số nhỏ hơn.
Ví dụ:nếu đầu vào của hàm là -
Đầu vào
const arr = [5, 34, 1, 13, 76, 8, 78, 101, 57, 565];
Đầu ra
const output = [565, 78, 76, 57, 8, 34, 5, 13, 101, 1];
Giải thích đầu ra
Vì 565 có tổng chữ số cao nhất là 16, tiếp theo là 78 và 76 và 101 và 1 có tổng chữ số nhỏ nhất lần lượt là 2 và 1
Ví dụ
Sau đây là mã -
const arr = [5, 34, 1, 13, 76, 8, 78, 101, 57, 565]; const addDigits = (num, sum = 0) => { if(num){ return addDigits(Math.floor(num / 10), sum + (num % 10)); }; return sum; }; const sortByDigitSum = (arr = []) => { arr.sort((a, b) => { return addDigits(b) - addDigits(a); }); return arr; }; sortByDigitSum(arr); console.log(arr);
Đầu ra
[ 565, 78, 76, 57, 8, 34, 5, 13, 101, 1 ]