json 尝试使用异步函数在omdbapi中获取电影细节并将其加载到html文件中

xggvc2p6  于 2023-08-08  发布在  其他
关注(0)|答案(1)|浏览(124)

我尝试使用omdbapi和我使用异步函数来获取数据。我使用Object.key()const data转换为数组,以便可以使用map()将数据发送到innerHTML,但它总是显示undefined。我想使用map()data转换为一个新数组,并使用movieHTML()在html中显示它。请帮帮忙

const movieListEl = document.querySelector('.shows');
     async function main (event) {
     const url = `https://www.omdbapi.com/?apikey=39a36280&s=${encodeURI(event)}`;
     const search = await fetch(`${url}`);
     const data = await search.json();
     // console.log(data.Search)
     // if (data.Response === 'True') {
     //     console.log(data.Search)
     // }
     let dataKeys = Object.keys(data.Search);
   
     movieListEl.innerHTML = dataKeys.map((movie) => 
     console.log(movieHTML(movie))).join("");
     } 

     main('squid game');

    function movieHTML (details) {
    return `<div class="shows__content">
    <figure class="shows__poster">
        <img src="${details.Poster}" alt="" class="poster">
    </figure>
       <div class="poster__description">
        <h4 class="poster__title">${details.Title}</h4>
        <p class="poster__year">${details.Year}</p>
    </div>
    </div>
     `
     }

个字符

0sgqnhkj

0sgqnhkj1#

为什么使用Object.keys?:

let dataKeys = Object.keys(data.Search);

movieListEl.innerHTML = dataKeys.map((movie) => 
   console.log(movieHTML(movie))).join("");
}

字符串
如果你检查你的数据,你会发现data.Search是一个数组。因此,它的“键”是索引值(0,1,2等)。将这些整数值发送到movieHTML()似乎效率不高。
不是在数组的 indexes 上循环,而是在数组本身上循环,并将其中的每个对象发送给函数:

movieListEl.innerHTML = data.Search.map((movie) => 
   console.log(movieHTML(movie))).join("");
}

相关问题