๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
JS

[JavaScript] : api์—์„œ ๋ฐ›์•„์˜จ ๋ฐ์ดํ„ฐ๋ฅผ console.log ๋กœ ์ฐ์„ ๋•Œ..

by ๊ถŒ์Šพํ–„ 2023. 6. 2.

fetch(
    'https://api.themoviedb.org/3/movie/top_rated?api_key=5e19d720d8a39386697259e7163ef8bc&language=ko-KR&page=1',
    options
)
    .then((response) => response.json())
    .then((data) => console.log(data))

api ์—์„œ ๋ฐ›์•„์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ˜์†”๋กœ ์ถœ๋ ฅ

๋ฐ›์•„์˜จ ๋ฐ์ดํ„ฐ์˜ result๋Š” 20๊ฐœ์˜ ๋ฐฐ์—ด๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๊ณ , ํ•˜๋‚˜ํ•˜๋‚˜์˜ ์š”์†Œ๋Š” ๊ฐ์ฒด๋กœ ๊ตฌ์„ฑ์ด ๋˜์–ด์žˆ๋‹ค.

results ๊ฐ’์€ ์š”์†Œ๋งˆ๋‹ค ์ €๋Ÿฐ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ ,

๊ฐ ์š”์†Œ๋Š” ์ด๋Ÿฌํ•œ key-value๋กœ ๊ตฌ์„ฑ์ด ๋˜์–ด์žˆ๋‹ค.

์—ฌ๊ธฐ์„œ ํ•˜๋‚˜ํ•˜๋‚˜ ์š”์†Œ์˜ title ๊ฐ’์ธ ์ œ๋ชฉ์— ์ ‘๊ทผ์„ ํ•ด์„œ ์˜ํ™” ์ œ๋ชฉ๋“ค๋งŒ ๊ฐ€์ง€๊ณ ์˜ค๋Š” ์ฝ”๋“œ๋ฅผ ๋‚˜๋Š” ํ™•์‹คํžˆ ์•Œ๊ณ  ์žˆ์—ˆ๋‹ค ์ƒ๊ฐํ–ˆ์œผ๋‚˜,

ํ•ญ์ƒ ์Šต๊ด€์ ์œผ๋กœ ๋ฐฐ์—ด์„ ๋ณด๋ฉด forEach๋ฅผ ๋Œ๋ ค์˜จ ํƒ“์—, ํ•˜๋‚˜ ๊ฐ„๊ณผํ•œ ๋ถ€๋ถ„์ด ์žˆ์—ˆ๋‹ค.

fetch(
    'https://api.themoviedb.org/3/movie/top_rated?api_key=5e19d720d8a39386697259e7163ef8bc&language=ko-KR&page=1',
    options
)
    .then((response) => response.json())
    .then((data) => console.log(data.result))

์ด๋ ‡๊ฒŒ ๋ฐ์ดํ„ฐ์˜ results ๊ฐ’์— ์ ‘๊ทผ์„ ํ–ˆ๊ณ , 

fetch(
    'https://api.themoviedb.org/3/movie/top_rated?api_key=5e19d720d8a39386697259e7163ef8bc&language=ko-KR&page=1',
    options
)
    .then((response) => response.json())
    .then((data) => console.log(data.results.title))

์ด๋ ‡๊ฒŒ ๋ฐ”๋กœ title ๊ฐ’์— ์ ‘๊ทผ์„ ํ–ˆ๋”๋‹ˆ...

๋‚œ ์ด ์ƒํ™ฉ์„ ์ดํ•ดํ•  ์ˆ˜๊ฐ€ ์—†์—ˆ๋‹ค.

"์›๋ž˜ ๊ฐ™์œผ๋ฉด 20๊ฐœ์˜ ์˜ํ™” ์ œ๋ชฉ๋“ค์ด ์ฃผ๋ฃจ๋ฃฉ ๋‚˜์™€์•ผ ํ•˜๋Š”๋ฐ,..?? ์™œ undefined(= ๊ฐ’์ด ์—†์Œ) ์ด๋ผ๊ณ  ๋‚˜์˜ฌ๊นŒ..?"

fetch(
    'https://api.themoviedb.org/3/movie/top_rated?api_key=5e19d720d8a39386697259e7163ef8bc&language=ko-KR&page=1',
    options
)
    .then((response) => response.json())
    .then((data) => {
        let rows = data.results;
        rows.forEach((a) => {
            console.log(a.title);
        });
    })

๊ทธ๋ž˜์„œ ์ด๋ฒˆ์—” ํ•ญ์ƒ ์„ฑ๊ณต์ ์œผ๋กœ ๊ฒฐ๊ณผ๊ฐ’์„ ์ถœ๋ ฅํ–ˆ๋˜ ์ฝ”๋“œ์ธ forEach ๋ฅผ ์จ์„œ ๋‹ค์‹œ ์‹œ๋„ํ•ด ๋ณด์•˜๋‹ค.

์ž˜ ๋‚˜์˜ค๋Š”๋ฐ... ์™œ ์•„๊นŒ๋Š” undefined๊ฐ€ ๋‚˜์™”๋˜ ๊ฑฐ์ง€? ๋ผ๊ณ  ์ƒ๊ฐ์„ ํ•˜๊ณ  ์ด๊ฒƒ์ €๊ฒƒ console.log()๋ฅผ ์ฐ์–ด๋ณด๊ณ  ๋‚˜์„œ์•ผ ์•Œ์•˜๋‹ค.

forEach ๊ฐ€ ์ €๋ ‡๊ฒŒ ์ •์ƒ์ ์œผ๋กœ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฝ‘์•„์„œ ๊ฐ€์ ธ์˜ค๋Š” ์ด์œ ๋Š”,

1. data์˜ results ๊ฐ’์„ rows ๋ผ๊ณ  ์„ ์–ธ์„ ํ–ˆ๊ณ 

2. rows ์˜ ๋ฐฐ์—ด ์š”์†Œ๋“ค์ด a๋ผ๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜ ์•ˆ์œผ๋กœ "ํ•œ ์š”์†Œ์”ฉ" ๋“ค์–ด์˜ค๋ฉด์„œ ๊ทธ ํ•œ ์š”์†Œ๋งŒ์˜ title๊ฐ’์„ a.title๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ ๋•Œ๋ฌธ์—,

3. rows์˜ ๋ฐฐ์—ด ๊ธธ์ด๋งŒํผ console.log๋กœ ์ฐํžˆ๋ฉด์„œ ์ •์ƒ์ ์œผ๋กœ a.title์˜ ๊ฐ’์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ๋ฝ‘์•„ ์™”๋˜๊ฒƒ์ด๊ณ .

๋งจ์ฒ˜์Œ ๋‚ด๊ฐ€ ์ป๋˜ console.log(data.results.title)์ด undefined๋ผ๊ณ  ๋‚˜์™”๋˜ ์ด์œ ๋Š”,

1. data์˜ results ๊ฐ’์—๋Š” ์ ‘๊ทผ์„ ํ–ˆ์œผ๋‚˜,

2. results ๋Š” ํ•˜๋‚˜์˜ ์š”์†Œ๊ฐ€ ๊ฐ์ฒด๋กœ ์ด๋ฃจ์–ด์ง„ "๋ฐฐ์—ด"์ด์—ˆ๊ณ ,

3. ๋ฐฐ์—ด์— ์ ‘๊ทผํ•˜๋Š” [index] ๋ฐฉ์‹์„ ์“ฐ์ง€์•Š์€์ฑ„ ๊ทธ๋ƒฅ title์„ ์ฝ˜์†”๋กœ ์ฐ์–ด! ๋ผ๊ณ  ๋ช…๋ น ํ•˜๋‹ˆ๊นŒ,

4. ๊ฒฐ๊ณผ๊ฐ’์ด undefined๊ฐ€ ๋‚˜์˜ฌ ์ˆ˜ ๋ฐ–์— ์—†๋˜ ๊ฑฐ์˜€๋‹ค.


์˜ค๋Š˜ ์ด undefined๋Š” ๊ฐœ์ธ์ ์œผ๋กœ ๋‚˜์—๊ฒŒ ํฐ ์ถฉ๊ฒฉ์ด์—ˆ๋‹ค.

ํ•ญ์ƒ ๋ฐฐ์—ด์„ ๋ณด๋ฉด ๊ฒฐ๊ณผ๊ฐ’์„ ๋ฝ‘์•„๋‚ด๊ธฐ ์œ„ํ•ด forEach๋ฅผ ์‚ฌ์šฉํ•ด ์™”๋˜ ๋ฒ„๋ฆ‡์ด ์ด ๋ถ€๋ถ„์„ ๋‚˜๋กœ์จ ๊ฐ„๊ณผํ•˜๊ฒŒ ๋งŒ๋“ค์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๋‹น์—ฐํžˆ ์ด๋Ÿฌ๋ฉด ์ฐํžˆ๊ฒ ์ง€๋ผ๊ณ  ๋งˆ์Œ์†์œผ๋กœ ์ƒ๊ฐํ–ˆ๋˜ ๋ถ€๋ถ„์ด์—ˆ๊ณ , ์ด๋กœ์จ ์กฐ๊ธˆ ๋” ์ •ํ™•ํ•˜๊ฒŒ ๊ฐœ๋…์˜ ์˜๋ฏธ๋ฅผ ํŒŒ์•…ํ•˜์ง€ ์•Š์•˜๋‚˜ ์‹ถ์€ ๋งˆ์Œ์ด๋‹ค.

#forEach #๋ฐฐ์—ด์ ‘๊ทผ #์Šต๊ด€ #undefined