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

การเรียงลำดับแบบ Natural Sort ใน JavaScript

เรามีอาร์เรย์ที่มีตัวเลขและสตริงผสมกัน ต้องการเรียงให้ตัวเลขเรียงลำดับและอยู่ก่อนสตริงทั้งหมด แล้วค่อยเรียงสตริงตามตัวอักษร

ตัวอย่าง

สมมติอาร์เรย์ของเราคือ:

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' ]