[1일 3 Lodash 공부방] fill, findIndex, findLastIndex

Nekoromancer·2021년 5월 28일
0

1일 3 Lodash 공부방

목록 보기
4/4

1. _.fill

_.fill(array, value, [start=0], [end=array.length])

인자로 주어진 배열에 value 를 채웁니다. 옵션 값으로 start 와 end를 인자로 받는데 start 는 index고 end는 length 값입니다.

const array = [1, 2, 3];
 
_.fill(array, 'a');
// => ['a', 'a', 'a']
_.fill([0, 1, 2, 3, 4], '*', 1);
// => [0, '*', '*', '*', '*']
// start 값 1은 배열의 index 입니다
_.fill([0, 1, 2, 3, 4], '*', 1, 3);
// => [0, '*', '*', 3, 4]
// 반면 end 값 3은 length 입니다.

fp 함수는 옵션 값 없이 4개의 인자가 모두 필수 인자이며 인자의 순서도 다음과 같이 변경됩니다.

fp.fill(start=0, end=array.length, value, array)

동작의 변경은 없으며 역시 커링됩니다.

fp.fill(1)(3)('*')([0, 1, 2, 3, 4]);
// => [0, '*', '*', 3, 4]

2. _.findIndex

_.findIndex(array, [predicate=_.identity], [fromIndex=0])

주어진 배열안에서 판정 함수에 true를 반환하는 첫번째 요소의 index를 반환합니다. 만일 해당 요소가 없을시에는 -1을 반환합니다.

const users = [
  { 'user': 'barney',  'active': false },
  { 'user': 'fred',    'active': false },
  { 'user': 'pebbles', 'active': true },
];
 
_.findIndex(users, o => o.user === 'barney');
// => 0
_.findIndex(users, o => o.user === 'max');
// => -1

다른 시리즈에서도 설명했지만 순회가 가능한 판정 함수의 경우 다음과 같은 세가지 형태의 축약형으로 표현이 가능합니다.

_.findIndex(users, { active: true }); // 오브젝트를 직접 명시
_.findIndex(users, ['active', true]); // 배열의 key, value 쌍으로 표시
_.findIndex(users, 'active'); // 오브젝트의 key 값을 텍스트로 명시
// => 2

마지막 인자인 fromIndex은 탐색을 시작할 index를 지정합니다.

_.findIndex(users, { active: false });
// => 0
_.findIndex(users, { active: false }, 1);
// => 1

fp 함수는 array 인자를 받으며 커링이 가능합니다. 그리고 더이상 fromIndex를 인자로 받지 않습니다.

fp.findIndex({ active: false })(users);
// => 0

3. _.findLastIndex

_.findLastIndex(array, [predicate=_.identity], [fromIndex=array.length-1])

findIndex 메서드와 동일하나, 배열의 가장 마지막 인덱스부터 탐색하여 가장 먼저 판정함수에 true 를 반환하는 요소를 찾아 index 값을 반환합니다.

const users = [
  { 'user': 'barney',  'active': true },
  { 'user': 'fred',    'active': false },
  { 'user': 'pebbles', 'active': false },
];
 
_.findLastIndex(users, o => o.user === 'pebbles');
// => 2

마지막 옵션 인자인 fromIndex는 탐색을 시작할 index로 기본 값은 배열의 마지막 인덱스 입니다.

_.findLastIndex(users, ['active', false]);
// => 2
_.findLastIndex(users, ['active', false], 1);
// => 1

fp 함수는 findIndex와 마찬가지로 array 를 마지막에 받고 fromIndex 옵션을 받지 않으며 커링이 가능합니다.

fp.findLastIndex(['active', false])(users);
// => 1
profile
고양이 앓이 중인 프론트엔드 개발자

0개의 댓글