본문 바로가기

프론트엔드/javascript

[javascript] 객체에서 마지막 인덱스 찾는법 (findIndex 뒤에서부터 적용하기)

특정 조건을 만족하는 인덱스를 뽑아야 한다.

 

배열을 대상으로 할 경우 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] 누산기 reduce 알아보기 (알고리즘 자주출몰)

알고리즘 문제에 많은 사람들이 풀이법으로 reduce를 많이 사용하고있다. for문이나 카운트를 위해 별도 변수를 선언하지 않아도 아웃풋을 출력해낼 수 있기때문에 코드가 훨씬 직관적인것 같다.

pro-jm.tistory.com