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

จัดเรียงตัวเลขตามลำดับลดลง แต่วาง 0 ไว้หน้าสุดใน JavaScript

เราต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของตัวเลข ฟังก์ชันควรจัดเรียงอาร์เรย์ของตัวเลขตามเกณฑ์ต่อไปนี้:

  • ถ้าอาร์เรย์มีศูนย์ใดๆ พวกมันควรปรากฏขึ้นทั้งหมดที่จุดเริ่มต้น
  • ตัวเลขที่เหลือทั้งหมดควรวางในลำดับลดลง

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

const arr = [4, 7, 0 ,3, 5, 1, 0];

หลังจากจัดเรียงแล้ว อาร์เรย์ควรกลายเป็น:

const output = [0, 0, 7, 5, 4, 3, 1];

เราจะใช้เมธอด Array.prototype.sort() ที่นี่ สำหรับการจัดเรียงลำดับลดลง เราจะหาความต่างของอาร์กิวเมนต์ที่สองของฟังก์ชัน sort จากอาร์กิวเมนต์แรก และถ้าค่าใดเป็น falsy (ศูนย์) เราจะใช้ Number.MAX_VALUE แทนค่านั้น

ตัวอย่าง

const arr = [4, 7, 0 ,3, 5, 1, 0];
const specialSort = (arr = []) => {
  const sorter = (a, b) => {
    return (b || Number.MAX_VALUE) - (a || Number.MAX_VALUE);
  };
  arr.sort(sorter);
};
specialSort(arr);
console.log(arr);

ผลลัพธ์

สิ่งนี้จะให้ผลลัพธ์ดังนี้:

[
  0, 0, 7, 5,
  4, 3, 1
]