数字根排序算法 JavaScript
javascriptweb developmentobject oriented programming更新于 2025/10/1 14:04:17
某个正整数的数字根定义为其所有数字的总和。我们给出一个整数数组。我们必须以这样的方式对其进行排序:如果 a 位于 b 之前,并且 a 的数字根小于或等于 b 的数字根。如果两个数字具有相同的数字根,则较小的数字根(在常规意义上)应该排在前面。例如,4 和 13 具有相同的数字根,但是 4 < 13,因此在任何数字根排序中,如果两者都存在,则 4 位于 13 之前。
例如,
对于 a = [13, 20, 7, 4], 输出应为 [20, 4, 13, 7]。
让我们为这个问题编写代码−
我们将它分为两个函数,一个递归函数,计算数字的数字和,然后是一个排序函数,根据数字的总和对元素进行排序。
其代码为 −
示例
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);
输出
控制台中的输出将是 −
[ 23, 8, 26, 54, 89 ]
相关文章
有用资源
javascript 参考教程 - 该教程包含有关 javascript 的更多信息:https://www.cainiaomax.com/javascript/

