สมมติว่าเรามีอาร์เรย์ต่อไปนี้ -
const arr = [ ["A","F","A","H","F","F"], ["F","A","A","F","F","H"] ];
เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ดังกล่าว
ฟังก์ชันควรจัดเรียงอาร์เรย์ย่อยทั้งหมดของอาร์เรย์ที่กำหนดภายในตามกฎเหล่านี้ -
- หากองค์ประกอบไม่ใช่ "A" หรือ "F" ก็ควรรักษาตำแหน่งไว้
- หากองค์ประกอบเป็น "A" หรือ "F" ควรจัดเรียงตามตัวอักษร
ดังนั้นผลลัพธ์สุดท้ายของอาร์เรย์ด้านบนควรมีลักษณะดังนี้ −
const output = [ ["A","A","A","H","A","F"], ["F","F","F","F","F","H"] ];
โปรดทราบว่าองค์ประกอบจากอาร์เรย์ย่อยสามารถเปลี่ยนอาร์เรย์ได้หากอัลกอริธึมการจัดเรียงทำให้เปลี่ยนอาร์เรย์ได้
ตัวอย่าง
const arr = [ ["A","F","A","H","F","F"], ["F","A","A","F","F","H"] ]; const customSort = (arr = []) => { const order = [].concat(...arr.slice()), res = []; order.forEach((el, ind) => { if (el === 'A') { const fIndex = order.indexOf('F'); if (fIndex < ind){ order[fIndex] = 'A'; order[ind] = 'F'; }; }; }) arr.forEach(el => res.push(order.splice(0, el.length))) return res; } console.log(customSort(arr));
ผลลัพธ์
และผลลัพธ์ในคอนโซลจะเป็น −
[ [ 'A', 'A', 'A', 'H', 'A', 'F' ], [ 'F', 'F', 'F', 'F', 'F', 'H' ] ]