Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

จัดเรียงตัวเลขตามรากดิจิต (Digit Root) ใน JavaScript

รากดิจิต (Digit Root)

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

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

เช่น 4 และ 13 มีรากดิจิตเท่ากัน แต่ 4 < 13 ดังนั้น 4 จะมาก่อน 13 ในการจัดเรียงแบบรากดิจิตที่ทั้งคู่มีอยู่

เช่น ถ้าอาร์เรย์อินพุตคือ:

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 ]