웹개발 및 최신 테크 소식을 전하는 블로그, 웹이즈프리

HOME > lodash

lodash 모든 값들이 조건 일치여부 결과 반환, every() 메소드

Last Modified : 2023-02-06 / Created : 2022-11-14
2,326
View Count
lodash의 every()는 collection에 사용하는 메소드로 컬렉션의 모든 값을 조회하여 특정 조건을 모두 만족하는지 확인하여 결과를 불리언으로 반환하는 메소드입니다. 비슷한 메소드로 _.some()이 있는데요 ~~ some() 역시 컬렉션에 사용하면서 조건에 따라 불리언으로 반환하기 때문입니다. 관련하여 아래 링크를 참고하세요

_.some() 링크 바로가기 >
https://webisfree.com/2018-07-30/lodash-일치하는-값이-있는지-확인하기-some()

이제 아래서는 every()는 어떻게 사용하고 어떤 경우에 활용할 수 있을 지 간단하게 알아봅니다.



# Lodash every() 메소드


먼저 lodash _.every()의 간단한 문법을 알아봅니다.

_.every(collection, condition)

각각 아래와 같은 값을 나타냅니다.

collection : 반복해서 조건을 찾을 컬렉션 데이터
condition : 일치 여부를 확인 할 조건으로 배열 또는 객체

그럼 간략하게 예제를 만들고 어떻게 동작하는지 알아보겠습니다.


! Lodash every() 메소드 예제보기


먼저 아래와 같은 컬렉션 값 members가 있다고 가정합니다. 모든 멤버들은 시험을 통해 통과 여부를 passed에 true/false로 가지고 있는 경우 모두 통과했는지를 확인하려면? 이 때 _.every()를 사용할 수 있을 것입니다.
var members = [
  { no: 1, passed: true, score: 100 },
  { no: 2, passed: true, score: 80 },
  { no: 3, passed: true, score: 100 },
];

위 members의 내부 객체들은 모두 passed가 true인지 확인하기 위해 아래와 같이 결과를 확인해봅니다.
_.every(members, { passed: true })

// 출력결과
true

참고로 배열로 바꾸어 아래처럼 사용해도 결과는 동일합니다.
_.every(members, [ 'passed', true ])

members가 가진 모든 객체의 passed가 true이므로 위와 같이 모두 true가 반환되었습니다. 이처럼 모든 데이터에서 특정 조건을 확인하는 경우에 _.every()를 유용하게 사용할 수 있겠습니다. 이번에는 score를 확인해 모두 100점인지 확인해볼 수 있겠죠.
_.every(members, { score: 100 })

// 출력결과
false

이번에는 모두 100을 가지고 있지 않아서 false를 반환하게 됩니다.

참고로 위와 같이 모든 값을 순회하고 그 결과를 반환하기 위해서 자바스크립트의 reduce()를 사용할 수도 있겠죠. 위의 every()를 아래에서 간략하게 바꿔보면 어떻게 될까요?


@ Array.reduce()를 사용하여 바꾸어 보기
reduce()에 초기 값으로 true를 주었으며 함수는 이전 결과와 현재 item.score가 100인 경우에만 true를 반환하도록 하였습니다. 작성된 코드는 아래와 같습니다.
members.reduce(
  (accumulator, item) => {
    return accumulator=== true && item.score === 100 ? true : false
  }
  , true
)

// 출력결과
false

코드를 실행하면 예상한 것과 같이 false를 반환했습니다.

위 코드를 조금 수정하여 이번에는 만약 80점 이상인 경우라면 어떨까요? 이를 테스트하기 위해 코드를 아래처럼 변경하고 다시 실행해보았습니다.
members.reduce(
  (accumulator, item) => {
    return accumulator=== true && item.score >= 80 ? true : false
  }
  , true
)

// 출력결과
true

이번에는 true를 반환했습니다. 모두 score 값이 80점 이상이기 때문이죠~ 이처럼 reduce()를 사용할 수도 있겠습니다.


! 마치면서


또 어떤 경우에 사용할 수 있을까요? 만약 테이블에 있에 있는 각 로우(row)를 체크할 수 있는 경우 모든 로우가 체크되었는지 확인할 경우에도 이를 사용할 수 있겠습니다. 여기까지 lodash _.every()를 사용하는 방법을 간략하게 알아봤습니다.

Previous

lodash 소팅, 정렬하기, sortBy()

Previous

lodash 일치하는 값이 있는지 확인하기, some()