เราต้องเขียนฟังก์ชัน 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 ]