오늘은 팀원들과 GitHub에 코드를 합치고 또 각자의 역할을 담당하러 갔다.
어떤 팀원을 누르면 그 사람의 프로필 UI가 제일 먼저 보여지게 수정하자!
url parameter
를 받아와 처리할 수 있을텐데 싶음.queryString
과 URLSearchParams
에 대해 배워왔다./:변수명
같은 url parameter 대신 url?변수명=값
형태의 쿼리스트링을 사용query String
을 설정했다href
를 설정하면~경로/detail.html?id=0
이렇게 뜬다.<.html>
<a href="./Pages/detailPage/detail.html?id=0">
<div class="image" style="text-align: center; height: 200px">
<img src="image/city-3764330_1280.jpg" alt="" class="p1" />
<img src="image/pop-art-2706464_1280.jpg" alt="" class="p2" />
</div>
</a>
<.js>
const urlParams = new URLSearchParams(window.location.search);
const initValue = urlParams.get('id');
위와 같이 url parameter를 받아와 변수에 initValue로 저장했다.
// 현재 페이지의 URL을 다루는 인스턴스 생성
const urlParams = new URLSearchParams(window.location.search);
// 인스턴스의 get 메소드를 사용하여 id라는 이름의 값을 추출하여 변수에 저장
const initValue = urlParams.get('id');
// url Parmaeter의 값을 참조하여 profile이라는 팀원 데이터를 정렬 후 UI 생성 진행
// Array의 요소를 정렬하기 위해 고유 id가 url Parameter 값과 같은 값을 가진 요소를 추출
const selected = profile.filter(el => el.id === parseInt(initValue))
// 고유 id가 url Parameter 값과 다른 값을 가진 요소를 추출하여
const other = profile.filter(el => el.id !== parseInt(initValue))
// 정렬 된 Array로 반복문을 진행
const sorted = selected.concat(other);
sorted.forEach(data => {
const { name, github, blog, MBTI, goal, hobby } = data
///// ......UI 생성 코드 ///////////
계기
해결 방법
const sorted = profile.slice().sort((a, b) => {
const aId = a.id;
const bId = b.id;
if (aId === parseInt(initValue)) return -1;
if (bId === parseInt(initValue)) return 1;
return 0;
});
sort(콜백함수)
는 Array의 요소들을 하나씩 돌며 비교해주는데
이때 인자로 들어가는콜백함수의 return 값에 따라
요소의 위치를 바꿀지 그대로 둘지 결정되는 메소드다.
sort MDN 문서
profile.slice()
를 통해 profile Array데이터를 변경하지 않고 복제한다.(a, b) => {}
형태로 a,b는 각각 Array의 요소(오브젝트 자료형)이다.