다음과 같은 객체 배열이 있다고 가정해 보겠습니다. -
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} ];
우리는 그러한 배열 하나를 받아 다음 조건에 따라 정렬하는 JavaScript 함수를 작성해야 합니다 -
-
arr.flag ===false인 경우 일치하는 요소가 배열의 첫 번째에 배치되지만 이전 일치하는 요소 뒤에만 배치됩니다.
-
일치하지 않는 요소는 원래 있던 순서대로 유지됩니다.
-
등장 순서가 중요합니다.
따라서 위의 배열의 경우 출력은 -
여야 합니다.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} ];
따라서 이 함수의 코드를 작성해 보겠습니다 -
예시
이에 대한 코드는 -
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);
출력
콘솔의 출력은 다음과 같습니다. -
[ { 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 } ]