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

จัดเรียงในอาร์เรย์หลายมิติใน JavaScript


สมมติว่าเรามีอาร์เรย์ต่อไปนี้ -

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