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

Sắp xếp các số dựa trên tổng chữ số của chúng trong JavaScript

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 ]