Lodash 활용법
Lodash는 underscore에서 성능을 개선한 라이브러리며 IE의 하위 브라우저에서 es5, es6의 메소드를 사용할 수 있게 해줄 뿐만 아니라 통계 사용시에는 필수로 사용할 수 밖에 없다. 공식 문서를 봐도 되지만 구체적인 예시가 있어야 이해하기가 편하다 시작해보자.
Collection
배열과 객체 모두 사용가능한 메소드
filter
_.filter( 콜렉션, 검색할 데이터 또는 콜백함수 ) 콜렉션에서 해당 데이터 또는 콜백 조건에 맞는 데이터를 포함한 콜렉션을 반환한다. 리스트 검색 조건에 유용하다.
const users = [
{ user: "barney", age: 36, active: true },
{ user: "fred", age: 40, active: false },
];
_.filter(users, (o) => !o.active);
// => [ { 'user': 'fred', 'age': 40, 'active': false } ]
// _.matches 메소드가 생략된 형태
_.filter(users, { age: 36, active: true });
// === _.filter(users, _.matches({ 'age': 36, 'active': true }))
// => [ { 'user': 'barney', 'age': 36, 'active': true } ]
// _.matchesProperty 메소드가 생략된 형태
_.filter(users, ["active", false]);
// => [ { 'user': 'fred', 'age': 40, 'active': false } ]
// _.property 메소드가 생략된 형태
_.filter(users, "active");
// => [ { 'user': 'barney', 'age': 36, 'active': true } ]
reject
_.reject( 콜렉션, 제외시킬 데이터 또는 콜백함수 ) 콜렉션에서 해당 데이터 또는 콜백 조건에 맞는 데이터를 제외한 콜렉션을 반환한다. Delete API를 호출 한 뒤 삭제된 결과값을 제외해서 리스트를 갱신하고 싶을 때 유용하다.
AngularJS와의 예시를 보자
$scope.remove = function (data) {
ApiService.delete(
{
id: data.id,
},
function (data) {
// 삭제 성공시 해당 데이터를 제외한 리스트로 변경
$scope.list = _.reject($scope.list, data);
},
);
};
size
_.size( 콜렉션 ) 콜렉션의 사이즈를 반환한다. length와 같다고 생각하면 된다.
_.size([1, 2, 3]);
// => 3
_.size({ a: 1, b: 2 });
// => 2
_.size("apple");
// => 5
sampleSize
_.sampleSize( 콜렉션, [추출 갯수=1]) 콜렉션에서 추출 갯수만큼 랜덤 값을 배열로 반환한다.
_.sampleSize(_.range(1, 45), 7);
// => 로또 번호 추출
Array
배열에 사용 가능한 메소드
compact
_.compact( 배열 ) 배열에서 false, null, 0, ""(빈값), undefined, NaN의 값을 제외시킨 배열을 반환한다.
_.compact([0, 1, false, 2, "", 3]);
// => [1, 2, 3]
take
_.take( 배열, [가져올 요소 수=1]) 배열에서 앞에서부터 n개의 요소를 반환한다.
_.take([3, 5, 4, 7, 9], 3);
// => [3, 5, 4]
uniq
_.uniq( 배열 ) 배열의 중복 값을 제거한다.
_.uniq([1, 1, 3]);
// => [1, 3]
zip
_.zip( 배열, 배열... ) 배열의 인덱스에 따라 배열을 다시 만든다. 예제를 보는게 이해가 빠르다.
_.zip(["a", "b"], [1, 2], [true, false]);
// => [['a', 1, true], ['b', 2, false]]
Object
객체에 사용 가능한 메소드
get
_.get( 객체, 가져올 키, 기본값 ) 객체에서 해당 키 값만을 가져온다.
const object = { a: 1, b: 2, c: 3, e: { f: 5 } };
_.get(object, "a");
// => 1
_.get(object, "d");
// undefined
_.get(object, "d", 4);
// 4
_.get(object, "e.f");
// 5
omit
_.omit( 객체, 제외할 키 배열 ) 객체에서 해당 키를 제외한 객체를 반환한다.
const object = { a: 1, b: "2", c: 3 };
_.omit(object, ["a", "c"]);
// => { 'b': '2' }
_.omit(object, "a");
// => { 'b': '2', 'c': 3 }