apiのレスポンスが複雑な時の対処

apiからのレスポンスが以下の形の時、name情報をどう抽出したらいいのか。

{"message": "success”, "people": [{"name": "Alexey Ovchinin", "craft": "ISS"}, {"name": "Nick Hague", "craft": "ISS"}, {"name": "Christina Koch", "craft": "ISS"},{"name": "Alexander Skvortsov", "craft": "ISS"}, {"name": "Luca Parmitano", "craft": "ISS"}, {"name": "Andrew Morgan", "craft": "ISS"}], "number": 6}

色々試行錯誤して、以下のコードで成功。

const api_url = 'http://api.open-notify.org/astros.json';

async function getISS() {
    const response = await fetch(api_url);
    const data = await response.json();
    const { message, number, people } = data;
    let Name =[];
    for (i = 0; i < number; i++) {
        Name.push(people[i]["name"]) ;
    }
}

getISS();

peopleの中身が辞書構造を持っているので、順にnameの中身を取り出す。しかし、map関数を使うともっと簡便に出来ることに気づく。

let Name =[];
for (i = 0; i < number; i++) {
    Name.push(people[i]["name"]) ;
}

        ↓↓↓

const Name = people.map(x => x.name)

出来上がりのページはこちら

コメントを残す