[1일 3 Lodash 공부방] drop, dropRight, dropRightWhile, dropWhile

Nekoromancer·2021년 5월 26일
0

1일 3 Lodash 공부방

목록 보기
3/4

1일 3 Lodash 지만 오늘은 4형제 이기 때문에 4분을 모두 모셨다.

1. _.drop

_.drop(array, [n=1])

인자로 주어진 배열에서 0번 인덱스를 시작으로 주어진 숫자 n만큼의 길이의 요소를 잘라내어 버린 후 남은 배열을 반환한다. 두번째 인자 n의 기본값은 1인다.

_.drop([1, 2, 3]);
// => [2, 3]
 
_.drop([1, 2, 3], 2);
// => [3]

n이 주어진 배열의 길이보다 길다면 빈 배열을 반환한다.

_.drop([1, 2, 3], 5);
// => []

fp 함수의 경우 인자 n이 앞으로 오며 일반 함수와 달리 생략될 수 없다.

fp.drop(2)([1, 2, 3]);
// => [3]

2. _.dropRight

_.dropRight(array, [n=1])

자르는 시작점이 주어진 배열의 마지막 인덱스라는 점을 제외하면 _.drop 메서드와 완전히 같은 기능을 가진 메서드다.

_.dropRight([1, 2, 3]);
// => [1, 2]
 
_.dropRight([1, 2, 3], 2);
// => [1]

fp 함수 역시 동일하다.

fp.dropRight(2)([1, 2, 3]);
// => [1]

3 _.dropRightWhile

_.dropRightWhile(array, [predicate=_.identity])

dropRight 메서드에 filter가 합쳐진 형태의 메서드. 자를 길이 n 대신, 판정 함수를 받는다. 함수는 인자로 주어진 배열을 마지막 인덱스부터 순회하며 처음 "거짓"을 만나면 그 시점에서 순회를 멈추고 지금까지 순회한("참"이었던) 배열 요소들을 버리고 남은 배열들을 반환한다.

var users = [
  { 'user': 'barney',  'active': true },
  { 'user': 'fred',    'active': false },
  { 'user': 'pebbles', 'active': false }
];
 
_.dropRightWhile(users, o => !o.active);
// => objects for ['barney']

판정 함수의 형태가 아니라 컬렉션으로 형태를 구체적으로 축약해서 지정할 수도 있다.

// The `_.matches` iteratee shorthand.
_.dropRightWhile(users, { 'user': 'pebbles', 'active': false });
// => objects for ['barney', 'fred']

다른 축약형으로 Key, Value의 배열 쌍으로 축약하여 표현할 수도 있다.

// The `_.matchesProperty` iteratee shorthand.
_.dropRightWhile(users, ['active', false]);
// => objects for ['barney']

단순히 프로퍼티명 만으로 축약하여 표현할 수도 있다.

// The `_.property` iteratee shorthand.
_.dropRightWhile(users, 'active');
// => objects for ['barney', 'fred', 'pebbles']

// 이 축약형은 다음의 표현식과 같다.
_.dropRightWhile(users, o => !!o.active);

기본적으로 순회 가능한 함수가 인자로 오는 부분은 이런식으로 축약이 가능하다.

fp 함수는 판정 함수가 앞에 오고 커링이 가능한 것 이외에는 동일하다.

fp.dropRightWhile(o => !o.active)(users);
// => objects for ['barney']

4. _.dropWhile

_.dropWhile(array, [predicate=_.identity])

순회 시작 위치가 주어진 배열의 인덱스 0번 인것을 제외하면 dropRightWhile 과 동일하다.

var users = [
  { 'user': 'barney',  'active': false },
  { 'user': 'fred',    'active': false },
  { 'user': 'pebbles', 'active': true }
];
 
_.dropWhile(users, o => !o.active);
// => objects for ['pebbles']

fp 함수 역시 판점 함수가 앞에 오고 커링이 가능한 것 이외에는 동일하다.

fp.dropWhile(o => !o.active)(users);
// => objects for ['pebbles']
profile
고양이 앓이 중인 프론트엔드 개발자

0개의 댓글