Как перебрать определенную пару ключ-значение в массиве - PullRequest
0 голосов
/ 20 сентября 2019

Я работаю с объектом JSON, который состоит из 250+ массивов (данных, относящихся к разным странам, таким как население, язык, валюта и т. Д.). Мне нужна определенная пара ключ-значение (код страны), которую нужно извлечь из каждого массиваи хранится в другой переменной, чтобы позже я мог использовать ее для чего-то другого.

Я пытался использовать метод forEach, но у меня нет большого опыта работы с ним, поэтому мне это не удалось.После поиска похожих вопросов я обнаружил, что люди обычно спрашивают, как выполнить итерацию, хотя все пары ключ / значение, а не конкретную, как в этом случае.

$.getJSON("https://restcountries.eu/rest/v2/all", function(callback) { 
    var isoCode = callback[5].alpha2Code;
    console.log(isoCode);
});

Приведенный выше код извлекает код alpha2 (код страны)для определенного массива ([5] в этом примере).Это и есть цель, но мне нужно как-то автоматизировать процесс, чтобы он проходил через все 250 массивов, извлекал все коды стран и сохранял их в отдельной переменной.

1 Ответ

3 голосов
/ 20 сентября 2019

Пример # 1

Попробуйте что-то вроде этого:

$.getJSON("https://restcountries.eu/rest/v2/all", function (data) {
    const codes = data.map(item => item.alpha2Code);
    console.log(codes); // ['AF', 'AX', '...']
});

Выше кода использовался jQuery - зрелая библиотека JS .


Пример # 2

Тот же сценарий, но по-современному , использующий Fetch API на основе Promise, будет выглядеть так:

fetch("https://restcountries.eu/rest/v2/all")
    .then((response) => {
        // Parse string to JS object
        return response.json();
    })
    .then((data) => {
        const codes = data.map(item => item.alpha2Code);
        console.log(codes); // ['AF', 'AX', '...']
    });

Пример # 3

Версия чистого кода будет выглядеть так:

const config = {
    countriesUrl: "https://restcountries.eu/rest/v2/all"
};

async function makeRequest(url) {
    const response = await fetch(url);
    return response.json();
}

function fetchCounties() {
    return makeRequest(config.countriesUrl);
}

async function main() {
    try {
        const countries = await fetchCounties()
        const codes = countries.map(item => item.alpha2Code);
        console.log(codes); // ['AF', 'AX', '...']
    } catch (err) {
        console.error(err);
    }
}

main();
...