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

การจัดเรียงตัวเลขตามน้ำหนัก (ผลรวมเลขหลัก) ใน JavaScript

น้ำหนักของตัวเลขคือผลรวมของเลขหลัก ต้องจัดเรียงอาร์เรย์ตัวเลขตามน้ำหนักจากน้อยไปมาก หากน้ำหนักเท่ากัน เรียงตามค่าจริงจากน้อยไปมาก

ตัวอย่าง: 50 (น้ำหนัก 5) และ 23 (น้ำหนัก 5) → 23 จะอยู่ก่อน 50

ตัวอย่างโค้ด

const arr = [2, 1, 100, 56, 78, 3, 66, 99, 200, 46];

const calculateWeight = (num, sum = 0) => {
  if (num) { return calculateWeight(Math.floor(num / 10), sum + (num % 10)); }
  return sum;
};

const sorter = (a, b) => calculateWeight(a) - calculateWeight(b) || a - b;
arr.sort(sorter);
console.log(arr);

ผลลัพธ์

ค่าที่แสดงในคอนโซลจะเป็นดังนี้:

[ 1, 100, 2, 200, 3, 46, 56, 66, 78, 99 ]