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

Sắp xếp mảng để các phần tử cụ thể nằm đầu tiên - JavaScript

Cho mảng đối tượng:

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

Yêu cầu: sắp xếp mảng sao cho các phần tử có flag === false nằm trước, giữ nguyên thứ tự xuất hiện ban đầu của từng nhóm.

Kết quả mong đợi:

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

Mã thực hiện

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);

Kết quả

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