- Trending Categories
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
Physics
Chemistry
Biology
Mathematics
English
Economics
Psychology
Social Studies
Fashion Studies
Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Digital root sort algorithm JavaScript
Digit root of some positive integer is defined as the sum of all of its digits. We are given an array of integers. We have to sort it in such a way that if a comes before b if the digit root of a is less than or equal to the digit root of b. If two numbers have the same digit root, the smaller one (in the regular sense) should come first. For example, 4 and 13 have the same digit root, however 4 < 13 thus 4 comes before 13 in any digitRoot sorting where both are present.
For Example,
for a = [13, 20, 7, 4], the output should be [20, 4, 13, 7].
Let’s write the code for this problem −
We will divide it in two functions, a recursive function that counts the sum of digits of a number, and then a sorting function that orders the element on the basis of the sum of digits.
The code for this will be −
Example
const arr = [54, 23, 8, 89, 26]; const recursiveCount = (num, count = 0) => { if(num){ return recursiveCount(Math.floor(num/10), count+num%10); }; return count; }; const sorter = (a, b) => { const countDifference = recursiveCount(a) - recursiveCount(b); return countDifference || a - b; }; arr.sort(sorter); console.log(arr);
Output
The output in the console will be −
[ 23, 8, 26, 54, 89 ]