在 JavaScript 中根據數字和對數字進行排序


問題

我們需要編寫一個 JavaScript 函式,該函式將正整數陣列 arr 作為第一個也是唯一引數。

我們的函式應該按以下方式對輸入陣列進行排序:數字和最高的數字排在前面,其次是數字和較小的數字。

例如,如果輸入函式的是 -

輸入

const arr = [5, 34, 1, 13, 76, 8, 78, 101, 57, 565];

輸出

const output = [565, 78, 76, 57, 8, 34, 5, 13, 101, 1];

輸出說明

因為 565 的數字和最高為 16,其次是 78 和 76,101 和 1 的數字和最小,分別為 2 和 1

示例

以下是程式碼 -

 現場演示

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);

輸出

[ 565, 78, 76, 57, 8, 34, 5, 13, 101, 1 ]

更新於: 2021 年 4 月 22 日

472 次瀏覽

啟動您的職業

完成課程以獲得認證

開始
廣告
© . All rights reserved.