과거의 이력/javascript
[javascript] 객체에서 마지막 인덱스 찾는법 (findIndex 뒤에서부터 적용하기)
정많이 정만이
2022. 2. 22. 17:50
특정 조건을 만족하는 인덱스를 뽑아야 한다.
배열을 대상으로 할 경우 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