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