프로그래밍(Web)/Javascript(TS,Node)

[바미] 배열의 특정 요소만 맨 뒤 또는 맨 앞으로 옮기기

Bami 2022. 3. 3. 16:37
728x90
반응형

ex) 배열 값 중 1인 값만 앞으로 내보내기

var arr1 = [1,0,2,3,1,4,5,6,7];

위와 같은 배열일 때

moveforward(arr) {
    return arr.filter((x) => x === 1).concat(arr.filter((x) => x !== 1));
}

filter() 함수는 첫번째 인자에 어떤 조건식을 세우면 그 조건식에 해당하는 요소들로 새로운 배열을 만들어서 반환하게 됩니다.

 

즉 x라는 인자에 x !== 0 이라는 조건식을 세웠으므로 0이 아닌 요소들만 가져와서 새로운 배열을 만들어 return하게 되죠.

두번째 filter()로는 x 인자가 1이 아닌 요소들로만 배열을 만듭니다. 그리고 concat()함수로 두 배열을 합쳐서 return해줍니다.

그러면 1인 값은 맨 앞으로, 아닌 값은 맨 뒤로 정렬이 됩니다.

 

1차원 배열 외에도 다차원 함수를 쓸 때도 사용하기 좋습니다.

 

저 같은 경우 오브젝트 배열 값을 정렬하기 위해 사용했는데

0 : { model : "K5", brand : "Kia", price : "3000", rep : 1 }
1 : { model : "Sonata", brand : "hyundai", price : "3000", rep : 0 }
2 : { model : "Genesis", brand : "hyundai", price : "5000", rep : 0 }

 

이런 값 형태로 있다 할 때 rep 값이 1인 배열값만 맨 앞으로 보내기 위해 사용했는데

moveforward(arr) {
    return arr.filter((x) => x.rep === 1).concat(arr.filter((x) => x.rep !== 1));
}

위와 같이 사용하였습니다.

 

이해하면 여러 방면으로 응용 할 수 있는 유용한 코드여서 공유합니다.

728x90
반응형