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

Sort Array ขององค์ประกอบตัวเลขและตัวอักษร (Natural Sort) JavaScript


เรามีอาร์เรย์ที่มีตัวเลขและสตริงบางตัว เราจำเป็นต้องเรียงลำดับ thearray เพื่อให้ตัวเลขได้รับการจัดเรียงและวางไว้ก่อนทุกสตริง จากนั้นจึงจัดเรียงสตริงตามตัวอักษร

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

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

const arr = [1, 'fdf', 'afv', 6, 47, 7, 'svd', 'bdf', 9];

ควรมีลักษณะเช่นนี้ −

[1, 6, 7, 9, 47, 'afv', 'bdf', 'fdf', 'svd']

ดังนั้น มาเขียนโค้ดสำหรับสิ่งนี้กัน −

ตัวอย่าง

const arr = [1, 'fdf', 'afv', 6, 47, 7, 'svd', 'bdf', 9];
const sorter = (a, b) => {
   if(typeof a === 'number' && typeof b === 'number'){
      return a - b;
   }else if(typeof a === 'number' && typeof b !== 'number'){
      return -1;
   }else if(typeof a !== 'number' && typeof b === 'number'){
      return 1;
   }else{
      return a > b ? 1 : -1;
   }
}
arr.sort(sorter);
console.log(arr);

ผลลัพธ์

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

[
   1, 6, 7,
   9, 47, 'afv',
   'bdf', 'fdf', 'svd'
]

ทำความเข้าใจรหัส −

ส่วนหลักของรหัสนี้คือฟังก์ชันตัวเรียงลำดับ เรารู้ว่าฟังก์ชันเรียกกลับได้รับสองอาร์กิวเมนต์ ทั้งคู่เป็นองค์ประกอบของอาร์เรย์

ตอนนี้เรามีความเป็นไปได้สี่ประการ –

  • ทั้ง a และ b เป็นตัวเลข → ในกรณีนี้ เราใส่จำนวนที่น้อยกว่าก่อนจำนวนที่มากกว่า

  • a คือตัวเลข แต่ b คือ string → ในกรณีนี้ เราใส่ตัวเลข (a) ก่อน string (b) ที่ถามในคำถาม

  • a คือสตริง แต่ b คือตัวเลข → ในกรณีนี้ เราใส่ b ก่อน a

  • ทั้ง a และ b เป็นสตริง → เราตรวจสอบสตริงที่เล็กกว่าตามลำดับตัวอักษร กล่าวคือ มาก่อนและวางไว้ก่อนหน้า