Computer >> Máy Tính >  >> Lập trình >> Javascript

Sắp xếp theo mảng đa chiều trong JavaScript

Giả sử, chúng ta có dãy mảng sau -

const arr = [
["A","F","A","H","F","F"],
 ["F","A","A","F","F","H"]
];

Chúng tôi được yêu cầu viết một hàm JavaScript có trong một mảng như vậy.

Hàm sẽ sắp xếp nội bộ tất cả các mảng con của mảng đã cho theo các quy tắc này -

  • Nếu các phần tử không phải là "A" hoặc "F", chúng phải duy trì vị trí của mình
  • Nếu phần tử là "A" hoặc "F", chúng phải được sắp xếp theo thứ tự bảng chữ cái

Do đó, kết quả cuối cùng cho mảng trên sẽ giống như -

const output = [ ["A","A","A","H","A","F"],
["F","F","F","F","F","H"]
];

Lưu ý rằng các phần tử từ các mảng con có thể thay đổi mảng của chúng nếu thuật toán sắp xếp khiến chúng làm như vậy.

Ví dụ

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));

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

[ [ 'A', 'A', 'A', 'H', 'A', 'F' ], [ 'F', 'F', 'F', 'F', 'F', 'H' ] ]