특정 조건을 만족하는 인덱스를 뽑아야 한다.
배열을 대상으로 할 경우 lastIndexOf() 를 사용하면 쉽게 찾아지지만,
배열안에 객체형태로 되어있는경우는 예외이다.
만약 다음과같은 데이터를 가진 arr 변수가 있다고 할때
나는 name이 jeongmin인 객체의 마지막 인덱스을 구하고싶다.
let arr = [{ 'name': 'jeongmin', 'job': null },
{ 'name': 'kim', 'job': 'dancer' },
{ 'name': 'lee', 'job': 'actor' },
{ 'name': 'jeongmin', 'job': 'developer' }]
해당 경우에 만약 아래 로직처럼 findIndex를 사용하게 된다면 조건을 만족하는 첫번째 값을 반환한다.
let firstIdx = arr.findIndes((param) => { return param.name === 'jeongmin' };
console.log(firstIdx);
// 출력값
>> 0
하지만 나는 조건을 만족하는 가장 마지막 인덱스를 가지고오고싶다.
해당 메소드를 찾을수가 없어 직접 구현해보았다.
const lastIdx = arr.reduce((acc, cur, idx) => {
if (cur['name'] === 'jeongmin') {
acc = idx
}
return acc
}, null)
console.log(lastIdx);
// 출력값
>> 2
여기서 사용한 reduce는 누산기라고도 하며 아래 링크에 정리해두었다.
https://pro-jm.tistory.com/51?category=1064701
'프론트엔드 > javascript' 카테고리의 다른 글
[javascript] 자바스크립트 구조분해할당 (직관적인 코드를 짜는법) (0) | 2022.02.28 |
---|---|
[javascript] 자바스크립트 소팅 sort() (큰수가 먼저 정렬되는 이유..?) (0) | 2022.02.28 |
[javascript] Converting circular structure to JSON (JSON 형태 배열 로그 찍는법) (0) | 2022.02.22 |
[javascript] Map 알아보기 (set, get 메소드 사용하기) (0) | 2022.02.15 |
[javascript] 누산기 reduce 알아보기 (알고리즘 자주출몰) (0) | 2022.02.15 |