Giả sử, chúng ta có một mảng các đối tượng như thế này -
const arr = [
{flag: true, other: 1},
{flag: true, other: 2},
{flag: false, other: 3},
{flag: true, other: 4},
{flag: true, other: 5},
{flag: true, other: 6},
{flag: false, other: 7}
]; 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 và sắp xếp nó dựa trên các điều kiện sau -
- Nếu arr.flag ===false, phần tử phù hợp sẽ được đặt đầu tiên trong mảng, nhưng chỉ sau các phần tử khớp trước đó.
- Các phần tử không khớp, vẫn theo thứ tự ban đầu.
- Thứ tự ngoại hình rất quan trọng.
Do đó, đối với mảng trên, kết quả đầu ra phải là -
const output = [
{flag: false, other: 3},
{flag: false, other: 7},
{flag: true, other: 1},
{flag: true, other: 2},
{flag: true, other: 4},
{flag: true, other: 5},
{flag: true, other: 6}
]; Ví dụ
Sau đây là mã -
const arr = [
{flag: true, other: 1},
{flag: true, other: 2},
{flag: false, other: 3},
{flag: true, other: 4},
{flag: true, other: 5},
{flag: true, other: 6},
{flag: false, other: 7}
];
const sortByFlag = arr => {
const sorter = (a, b) => {
if(!a['flag'] && b['flag']){
return -1;
};
if(a['flag'] && !b['flag']){
return 1;
}
return a['other'] - b['other'];
}
arr.sort(sorter);
};
sortByFlag(arr);
console.log(arr); Đầu ra
Điều này sẽ tạo ra kết quả sau trên bảng điều khiển -
[
{ flag: false, other: 3 },
{ flag: false, other: 7 },
{ flag: true, other: 1 },
{ flag: true, other: 2 },
{ flag: true, other: 4 },
{ flag: true, other: 5 },
{ flag: true, other: 6 }
]