String.includes()
를 사용할 때는 찾는 문자열을 정확하게 설정해주자!
아래의 코드는 유저의 입력값을 받아 검색 조건과 일치하는 UI를 그리는 함수다.
let filtered
부분을 보면 filter()
를 사용해서 데이터를 찾는데
그 조건으로 el.title.includes(searchValue)
만 적어서 작동을 안 했었다.
이후 입력값과, 데이터의 제목에 모두 toLowerCase()를 적용하여
대/소문자 관계 없이 일치하는 문자열을 찾을 수 있게 되었다!
처음 코드 : (el.title.includes(searchValue))
⬇️ - toLowerCase() 적용 - ⬇️
수정한 코드: (el.title.toLowerCase()).includes(searchValue.toLowerCase()))
// 검색 후 해당되는 데이터로 카드 UI 그리기
async function searchMovie(searchValue) {
let data;
const res = await fetch('https://api.themoviedb.org/3/movie/top_rated?language=en-US&page=1', options)
data = await res.json();
data = data.results;
let filtered = data.filter(el => (el.title.toLowerCase()).includes(searchValue.toLowerCase()))
movieContainer.innerHTML = ``;
createCard(filtered)
}