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.
Vì vậy, đố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} ];
Do đó, hãy viết mã cho chức năng này -
Ví dụ
Mã cho điều này sẽ là -
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
Đầu ra trong bảng điều khiển sẽ là -
[ { 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 } ]