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

Đẩy các phần tử cụ thể lên cuối cùng trong JavaScript

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