Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Sắp xếp số theo gốc chữ số (digit root) trong JavaScript


Gốc chữ số (Digit Root)

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

Cần viết hàm JavaScript nhận mảng số nguyên. Hàm sắp xếp 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ố, số nhỏ hơn (theo nghĩa thông thường) đứng trước.

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

Ví dụ - Nếu mảng đầu vào:

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

Đầu ra sẽ 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);

Kết quả

Điều này sẽ tạo ra đầu ra sau:

[ 20, 4, 13, 7 ]