블로그를 변경하였습니다.

해당 블로그는 더 이상 추가 포스팅 없을 예정입니다.

👉 새 블로그 방문하기


[JavaScript] filter ( )

2022. 1. 17. 21:23
728x90
반응형

 

자바스크립트의 filter 함수는 조건을 주고 해당 조건이 참인 요소를 모아 새로운 배열을 만들어 반환하는 함수이다.

 

** 새로운 배열을 만들지만 중복값을 제거해주지는 않기 때문에 배열 요소가 중복될 수 있다.

 

 

  기본 구문  

arr.filter(callback(element[, index[, array]])[, thisArg])
  • callback : 각 요소에 대한 조건값
    • element : 처리할 현재 요소
    • index : 현재 인덱스
    • array : filter를 호출한 배열
    • thisArg : callback을 생성할 때 this로 사용하는 값

 

  특징  

  1. 값이 존재하는 인덱스에 대해서만 호출이 된다.
  2. 삭제 또는 값이 없는 배열은 filter 함수가 실행되지 않는다.
  3. 기존 배열의 값을 변경하지 않는다.
  4. 처리되는 범위는 callback의 첫 호출 전에 설정된다. callback 호출 후 기존 배열을 추가해도 추가된 요소는 filter 함수에서 반영되지 않는다.

 

 

  예시   

[프로그래머스]  -  "실패율" 에 사용된 filter( )

 

[2,1,2,6,2,4,3,3] 의 배열 ( stages ) 이 주어진다.

 

여기서 구해야하는 수는 stages.filter( ele => ele ===  i )

ele : stages에서 하나씩 꺼낸 요소를,

ele === i  조건 ( 1 ~ 5 사이의 수 ) 에 맞는 요소를 토대로 새로운 배열을 만들어낸다.

 

에 만족하는 요소 배열을 반환

 

/**
 *
 * @param N: 스테이지 수
 * @param stages: 현재 멈춰있는 스테이지 배열
 * @returns {*[]}: 실패율이 높은 스테이지부터 내림차순
 */
function solution(N, stages) {
    
        .
        .
        .
    
    for(let i = 1; i <= N; i++){
        let player = stages.filter(ele => ele === i).length;
        let failRatio = 0;
		
        // 플레이어가 없을 경우 실패율: 0
        if(player === 0) failRatio = 0;
        else failRatio = (player) / total;
        
        .
        .
        .

    return arr.map(ele => ele.idx);
}

 

728x90
반응형

BELATED ARTICLES

more