본 내용은 내일배움캠프에서 활동한 내용을 기록한 글입니다.
function revStr(str) {
return str.split("").reverse().join("");
}
console.log(revStr("spartan"));
function summaryStr(str) {
const temp = {};
for (let i = 0; i < str.length; i++) {
if (temp[str[i]] === undefined) temp[str[i]] = 1;
else temp[str[i]] += 1;
}
let result = []
for (let item of Object.entries(temp)) {
result.push([item[0], item[1]].join(""));
}
return result.join("/");
}
console.log(summaryStr("aaabbbc"));
console.log(summaryStr("ahhhhz"));
function primeNum(num) {
for (let i = 2; i < num / 2; i++){
if (num % i == 0) return false;
}
return true;
}
console.log(primeNum(2));
console.log(primeNum(10));
console.log(primeNum(26));
console.log(primeNum(31));
console.log(primeNum(47));
const $searchContent = document.getElementById("search_content");
const $searchBtn = document.getElementById("search_btn");
let movieDataList = []; // 검색에서 사용할 전역 데이터 리스트
...
// 제목으로 영화 검색
const searchMovie = () => {
if ($searchContent.value === "") {
window.alert("검색할 제목을 입력해주세요!!");
} else {
// 현재 카드 리스트를 삭제
$movieCards.replaceChildren();
movieDataList.filter((item) => {
// 제목과 입력한 내용을 전부 소문자로 바꿔서 비교
let lowerTitle = item.title.toLowerCase();
let lowerContent = $searchContent.value.toLowerCase();
if (lowerTitle.includes(lowerContent)) {
appendCard(item.id, item.title, item.overview, item.poster_path, item.vote_average, $movieCards);
}
});
}
}
...
// 버튼에 클릭으로 검색 이벤트 추가
$searchBtn.addEventListener("click", () => {
searchMovie();
});
// 엔터 입력 시 검색 이벤트 추가
window.addEventListener("keydown", (event) => {
if (event.code === "Enter") {
searchMovie();
}
});
li
태그의 value에 페이지 번호를 넣음// 유사 Pagination 구현
const $movieCards = document.querySelector("#movieCards");
const $pageValue = document.querySelectorAll(".page-item");
const $activeClass = document.getElementsByClassName("active");
$pageValue.forEach((item) => {
item.addEventListener("click", async () => {
// 페이지 버튼의 활성화를 위한 코드
$activeClass[1].className = $activeClass[1].className.replace(" active", "");
item.className += " active";
// 새로운 데이터를 가져오기 전에 기존의 카드들을 지움
$movieCards.replaceChildren();
movieDataList = [];
await loadData(item.value);
// 데이터를 다 가져오면 스크롤을 제일 위로 이동
window.scrollTo({ top: 0, behavior: "smooth" });
});
});
// TMDB에서 페이지번호에 따라 데이터를 가져오는 함수
const loadData = async (pageNum) => {
try {
const res = await fetch(`https://api.themoviedb.org/3/movie/top_rated?language=en-US&page=${pageNum}`, options)
const data = await res.json();
data.results.forEach(item => {
appendCard(item.id, item.title, item.overview, item.poster_path, item.vote_average, $movieCards);
movieDataList.push(item); // 검색에서 사용할 전역 데이터 리스트
});
// 커서 모양 변화 함수
// cursorChange();
} catch(err) {
console.error(err);
}
}
a
태그 등에 Hover하면 커서가 변하는 코드를 구현함// TMDB에서 페이지번호에 따라 데이터를 가져오는 함수
const loadData = async (pageNum) => {
try {
const res = await fetch(`https://api.themoviedb.org/3/movie/top_rated?language=en-US&page=${pageNum}`, options)
const data = await res.json();
data.results.forEach(item => {
appendCard(item.id, item.title, item.overview, item.poster_path, item.vote_average, $movieCards);
movieDataList.push(item); // 검색에서 사용할 전역 데이터 리스트
});
// 커서 모양 변화 함수
// cursorChange();
} catch(err) {
console.error(err);
}
}