Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

การเรียงลำดับตัวเลขตามจาวาสคริปต์รูทหลัก


รูทหลัก

รากหลักของจำนวนเต็มบวกถูกกำหนดเป็นผลรวมของตัวเลขทั้งหมด

เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของจำนวนเต็ม ฟังก์ชันควรจัดเรียงในลักษณะที่ว่าถ้า a มาก่อน b รากหลักของ a จะน้อยกว่าหรือเท่ากับรากหลักของ b หากตัวเลขสองตัวมีรูทหลักเหมือนกัน ตัวที่เล็กกว่า (ในความหมายปกติ) ควรมาก่อน

ตัวอย่างเช่น 4 และ 13 มีรูทหลักเหมือนกัน อย่างไรก็ตาม 4 <13 ดังนั้น 4 มาก่อน 13 ในการเรียงลำดับ digitRoot ที่มีทั้งคู่

ตัวอย่างเช่น −

หากอาร์เรย์อินพุตเป็น −

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

จากนั้นผลลัพธ์ควรเป็น −

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

ตัวอย่าง

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

ผลลัพธ์

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

[ 20, 4, 13, 7 ]