lodash의 공식 document (https://lodash.com/docs/4.17.15) 에는 데이터의 타입별로 사용할 수 있는 함수에 대한 카테고리가 있다.
그 중 자주 사용되는 카테고리는 다음과 같다.
Array
배열에만 사용 가능한 함수Object
객체에만 사용 가능한 함수Collection
배열과 객체 모두 사용 가능한 함수Util
유틸리티 관련 함수
오늘은 Collection
카테고리의 find() 함수에 대해 정리하려고 한다.
조건을 만족하는 Collection 에서 첫번째 요소를 찾아 그 값을 반환하는 함수.
Collection
에서 찾을 데이터의 조건
을 각각 인자로 넣어준다.
_.find(Collection(배열|객체), 조건(배열|객체|함수))
다음과 같은 Collection
에서 age가 32인 첫 번째 객체를 찾고자 한다.
const users = [
{ user: 'joy', age: 32 },
{ user: 'rose', age: 41 },
{ user: 'chandler', age: 39 },
{ user: 'js', age: 32 }
]
조건으로 객체
를 넣을 경우
_.find(users, { age: 32 })
// 결과
// 조건에 해당하는 첫 번째 값을 리턴한다.
// { user: 'joy', age: 32 }
조건으로 배열
을 넘겨줄 땐, [key, value] 형태로 넘겨준다.
_.find(users, [age, 32]);
// { user: 'joy', age: 32 }
다음과 같이 조건을 함수
로 작성할 수도 있다.
_.find(users, (o) => {
if (o.age === 32 ) return o;
});
Javascript ES6 함수에도 find() 함수가 있지만, lodash와 다르게
Array
에서만 사용할 수 있기 때문에, lodash의 find()를 활용하면 생산성을 높힐 수 있다.
하지만, 성능 면에서는 비교적 간단한 로직을 처리할 땐 ES6의 find()가 lodash의 find()보다 더 좋다. 따라서, 복잡한 로직을 처리해야 하거나, 상황이 아니라면 ES6의 find()를 사용하는 것이 좋을 것 같다.