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

У меня есть 2 массива - countryNames и countryCodes.Последовательность индексов элементов внутри этих массивов выравнивается, поскольку они поступают из одного и того же API, то есть countryNames [0] - Афганистан, а countryCodes [0] - «AF» и т. Д.

Я пытаюсь создать новый, отдельныйобъект для аккуратного хранения данных в парах ключ / значение (как это делает объект JSON), но я пока не добился успеха.Кто-то предложил перебрать их, но я не слишком уверен, как это сделать.Любая помощь будет высоко ценится!

Ниже приведен единственный код, с которым у меня был какой-то успех.Он дает мне объект (хотя и выглядит странно), но не хранит данные в паре ключ / значение.

 var keys = [];
 var values = [];


 fetch("https://restcountries.eu/rest/v2/all")
.then((response) => {
    return response.json();
})
.then((data) => {
    const codes = data.map(item => item.alpha2Code);
    values.push(codes);

    const names = data.map(item => item.name);
    keys.push(names);

    var result = [];
    keys.forEach((key, i) => result[key] = values[i]);
    console.log(result);
});

Я просто хочу получить что-то вроде -
{
CountryName: CountryCode,
2ndCountryName: 2ndCountryCode,
3rdCounryName: 3rdCountryCode,
и т. Д .....
};

Ответы [ 4 ]

1 голос
/ 27 сентября 2019

Array.reduce на помощь:

fetch("https://restcountries.eu/rest/v2/all")
  .then((response) => {
    return response.json();
  })
  .then((data) => {
      const result = data.reduce((countries, item)=> {
      	countries[item.name] = item.alpha2Code;
        return countries;
      }, {});
      console.log(result);
  });

, если вы хотите узнать больше об этом: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce

0 голосов
/ 27 сентября 2019

var keys = [];
 var values = [];


 fetch("https://restcountries.eu/rest/v2/all")
.then((response) => {
    return response.json();
})
.then((data) => {
    const codes = data.map(item => item.alpha2Code);
    values.push(codes);

    const names = data.map(item => item.name);
    keys.push(names);

    var result = [];
    
    keys[0].forEach((key, i) => {
       const obj = {};
       obj[values[0][i]] = key;       
       result.push(obj);
     }
    );
    
    console.log(result);
});
0 голосов
/ 27 сентября 2019
fetch("https://restcountries.eu/rest/v2/all")
.then((response) => {
    return response.json();
})
.then((data) => {
  const results = data.reduce((agg, item) => {
    agg[item.name] = item.alpha2Code
    return agg
  }, {})
  console.log(results)
})
0 голосов
/ 27 сентября 2019

fetch("https://restcountries.eu/rest/v2/all").then((response) => {
	return response.json();
}).then((data) => {
	var result = {}
	for (var i = 0; i < data.length; i++) {
		result[data[i].name] = data[i].alpha2Code;
	}
	console.log(result);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...