티스토리 뷰

앞서서 설명한 forEach와 map은 정말 많이 쓰니 꼭 알아둬야한다.

근데 이번에 설명한 some, every, filter 는 앞의 두녀석보다는 상대적으로 덜 쓰게 된다. (filter는 자주 쓰는거 같다)

심지어 some, every 의 존재 자체를 깜빡한 채 해당 기능을 반복문으로 직접 구현할때도 있었다...

평상시에 정리해두면서 머리속에 팍팍 넣어놔야 겠다.

 

세가지 메소드 모두 인자로는 (요소, 인덱스, 배열자체) 를 받는다.

예제에서는 요소 하나만 인자로 받아서 설명하도록 하겠다. (실제로도 거의 이렇더라 나는)

some

배열의 요소중 하나라도 특정 조건을 만족하는지 true, false로 리턴해주는 메소드다. (이름 참 명확하다)

참고로 요소를 돌면서 조건을 만족하는 요소를 만나면 그 즉시 true를 리턴한다. (뒤의 요소는 더 이상 볼 필요가 없으니)

let numArr = [1, 2, 3, 4, 5]

// 배열의 요소 중 숫자 3이 있능가?
let ans = numArr.some(number => {
  console.log(number)
  return number === 3
})

console.log(ans)
// 1
// 2
// 3
// true

 

every

배열의 모든 요소가 조건을 만족하는지 true, false로 리턴하는 메소드다.

some과는 다르게 false를 리턴하는 요소를 만나면 그 즉시 false를 리턴한다.

let numArr = [1, 2, 3, 4, 5]

// 배열의 모든 요소가 0보다 큰가?
let ans = numArr.every(number => {
  return number > 0
})

console.log(ans) // true

중간에 false 를 리턴하는 요소가 있다고 해보자.

let numArr = [1, 2, 3, 4, 5]

let ans = numArr.every(number => {
  console.log(number)
  return number < 3
})

console.log(ans)
// 1
// 2
// 3
// false

쉽쥬?

 

filter

배열의 모든 요소를 검사하면서 특정 조건을 만족하는 요소들로만 이루어진 새로운 배열을 리턴한다.

개인적으로는 정말 많이 사용하게 되는 녀석이다. (grid 에서 여러 행을 선택 후 프론트 상에서 삭제를 하는 기능 등...)

위의 every 요소를 filter로 재탕해보겠다.

let numArr = [1, 2, 3, 4, 5]

// 배열의 요소 중 3보다 작은 녀석들
let newArr = numArr.filter(number => {
  return number < 3
})

console.log(newArr) // [1, 2]

긴 설명 필요 없이 매우 편하다...

 

사실 위의 3개 메소드 모두 반복문으로 직접 구현할 수야 있겠지만 알아두면 정말 유용한 녀석들이다.

누군가에겐 이 글이 도움이 되길 바라며... 다음번에는 reduce 에 대해 다뤄보겠다

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함