Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

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

Giả sử chúng ta có mảng các mảng sau:

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

Chúng ta cần viết hàm JavaScript nhận vào mảng này.

Hàm sắp xếp nội bộ tất cả các mảng con của mảng cho trước theo quy tắc:

  • Nếu phần tử không phải "A" hoặc "F", giữ nguyên vị trí
  • Nếu phần tử là "A" hoặc "F", sắp xếp theo thứ tự bảng chữ cái

Kết quả cuối cùng:

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

Lưu ý các phần tử từ mảng con có thể thay đổi mảng nếu thuật toán sắp xếp làm cho 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));

Kết quả

Kết quả in ra console:

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