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

การเรียงลำดับตามน้ำหนักของตัวเลขใน JavaScript


น้ำหนักของตัวเลขคือผลรวมของตัวเลขของตัวเลขนั้น ตัวอย่างเช่น −

The weight of 100 is 1
The weight of 22 is 4
The weight of 99 is 18
The weight of 123 is 6

เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่ใช้อาร์เรย์ของตัวเลข ฟังก์ชันควรจัดเรียงตัวเลขตามลำดับน้ำหนักที่เพิ่มขึ้น และหากตัวเลขสองตัวมีน้ำหนักเท่ากัน ควรวางตามลำดับที่เพิ่มขึ้นจริง

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

50 และ 23 มีน้ำหนักเท่ากัน ดังนั้น 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) => {
   return calculateWeight(a) − calculateWeight(b) || a − b;
}
arr.sort(sorter);
console.log(arr);

ผลลัพธ์

และผลลัพธ์ในคอนโซลจะเป็น −

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