배열은 filter, forEach, find...등의 메소드로
배열 안에 원하는 값을 찾고 가져오고 했었는데,
중첩 객체인 경우 객체 안에 객체에서 원하는 값을 가져올 일이 생기니까
중첩 객체는 어떻게 탐색해야 하지...? 싶었다.
[ Todo ]
swiper.js의 swiper.realIndex와 미리 지정해둔 html의 data-index 속성을 비교해서 swiper의 현재 인덱스에 맞는 html요소를 노출시키는 것
[구현 방법]
1. swiperIdx 클래스를 가진 요소들을 탐색하여 저장
2. 저장된 요소들 중 현재 swipe의 index와 일치하는 data-index-number를 가진 요소를 탐색
3. 해당 요소에 show 클래스 추가
4. 나머지 요소에서는 show 클래스 제거
<div class="swiperIdx show" data-index-number="0">
<div class="page_text">
<div class="tit">Swipe 1</div>
<div class="stit">첫 번째 Swipe입니다.</div>
</div>
</div>
<div class="swiperIdx" data-index-number="1">
<div class="page_text">
<div class="tit">Swipe 2</div>
<div class="stit">두 번째 Swipe입니다.</div>
</div>
</div>
<div class="swiperIdx" data-index-number="2">
<div class="page_text">
<div class="tit">Swipe 3</div>
<div class="stit">세 번째 Swipe입니다.</div>
</div>
</div>
const elements = document.getElementsByClassName('swiperIdx');
console.log(Object.entries(elements))
const item = (Object.entries(elements).filter(([ , elem]) => elem.dataset.indexNumber === swiper.realIndex.toString())[0])[1]
item.classList.add('show')
func.call(thisArg[, arg1[, arg2[, ...]]])
- thisArg
func 호출에 제공되는 this의 값.- return value
this 와 arguments 를 매개로 호출된 함수의 반환값
** apply()와 차이점:
call(): 인수 목록을, apply(): 인수 배열 하나를 받음
console.log(Array.prototype.filter.call(
elements,
(elem) => elem.dataset.indexNumber === "1"
))
const item = Array.prototype.filter.call(
elements,
(elem) => elem.dataset.indexNumber === swiper.realIndex.toString()
)[0]
[참고: https://habitual-history.tistory.com/entry/JS-%EA%B0%9D%EC%B2%B4%EC%95%88%EC%97%90-%EA%B0%9D%EC%B2%B4%EC%97%90%EC%84%9C-%EC%9B%90%ED%95%98%EB%8A%94-%EA%B0%92%EB%A7%8C-%EA%B0%80%EC%A0%B8%EC%98%A4%EA%B8%B0-feat-entries-filter]
[참고: https://medium.com/@soyoung823/function-methods-c18bfe7923b]