สมมติว่าเรามีอาร์เรย์ของสตริงตัวอักษรและตัวเลขเช่นนี้ -
const arr =['A1', 'A10', 'A11', 'A12', 'A3A', 'A3B', 'A3', 'A4', 'B10', 'B2', 'F1' , '1', '2', 'F3'];
เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ซึ่งในอาร์เรย์หนึ่งเป็นอาร์กิวเมนต์เดียวเท่านั้น
และฟังก์ชันควรจัดเรียงอาร์เรย์นี้แทน −
- สตริงที่มีเฉพาะตัวเลขควรอยู่ในลำดับที่มากขึ้นตามลำดับ
- สตริงที่ประกอบด้วยตัวอักษรและตัวเลขควรจัดเรียงตามลำดับตัวอักษรก่อนแล้วจึงเรียงตามลำดับตัวเลขที่เพิ่มขึ้น
ดังนั้นผลลัพธ์ควรมีลักษณะดังนี้ −
เอาต์พุตคอนสตรัค =['1', '2', 'A1', 'A2', 'A3', 'A3A', 'A3B', 'A4', 'A10', 'A11', 'A12' , 'B2', 'B10', 'F1', 'F3'];
ตัวอย่าง
const arr =['A1', 'A10', 'A11', 'A12', 'A3A', 'A3B', 'A3', 'A4', 'B10', 'B2', 'F1' , '1', '2', 'F3'];const alphaNumericSort =(arr =[]) => { const sorter =(a, b) => { const isNumber =(v) => (+v) toString() ===v; const aPart =a.match(/\d+|\D+/g); const bPart =b.match(/\d+|\D+/g); ให้ i =0; ให้ len =Math.min(aPart.length, bPart.length); ในขณะที่ (iผลลัพธ์
และผลลัพธ์ในคอนโซลจะเป็น −
<ก่อนหน้า>[ '1', '2', 'A1', 'A3', 'A3A', 'A3B', 'A4', 'A10', 'A11', 'A12', 'B2', 'B10 ', 'F1', 'F3']