filter로 같은 숫자없애기




프로그래머스의 ‘똑같은 숫자는 싫어’ 문제.

배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려 한다.

이럴때 filter를 사용하면 간단한데, 아직도 filter 제대로 어떻게 사용하는지 모르겠음.. 이기회에 정리해놔야지

우선 처음에 이 문제를 받았을때 난 그냥 filter대신에 정직한 for문을 사용해야겠다고 생각했음..

나의 원코드..

function solution(arr){
	for(let i=0; i<arr.length; i++){
    if(arr[i] !== arr[i-1]){
      answer.push(arr[i])    
    }
  }
}

진짜 좀 무식하게 짜긴했는데..-_-

생각안나면 뭐 저렇게라도 써야지 뭐 어쩌겠나..



근데 filter를 이용하면 엄청 간단하게 짤수있다.

map이나 set도 마찬가지.

map, filter, set 메서드들은 명확히 알아놔야겠다

필터를 사용하면

arr.filter((val,index) => val != arr[index+1])

이렇게 쓸 수 있는데

진짜 개간단하네… -_- 내 코드 진짜 너무 숨기고싶군ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ






filter는 주어진 함수의 테스트를 통과하는 모든 요소를 모아 새로운 배열로 반환하는 메서드이다.

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

const words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];

const result = words.filter(word => word.length > 6);

console.log(result);
// expected output: Array ["exuberant", "destruction", "present"]

우선 개념은 이런식인데..

여러 방법으로 사용할수 있다고 한다.

결론적으로는 어떻게든 조건을 걸어서 필터를 시킨뒤에 다시 배열을 만들어주는 메서드인데,

함수를 밖에서 사용해서 조건을 걸어줄수도있고, 안에서 사용해서 걸어줄수도 있음






다음에 배열문제나오면 filter사용해서 풀어보고싶다..!




© 2018. by sora

Powered by sora