#javascript #arrays #web
#javascript #массивы #веб
Вопрос:
Итак, я пытаюсь получить элементы из JSON объектов, например, данные JSON:
[
{
"infected": 55630,
"tested": "NA",
"recovered": 38788,
"deceased": 1897,
"country": "Algeria",
"moreData": "https://api.apify.com/v2/key-value-stores/pp4Wo2slUJ78ZnaAi/records/LATEST?disableRedirect=true",
"historyData": "https://api.apify.com/v2/datasets/hi0DJXpcyzDwtg2Fm/items?format=jsonamp;clean=1",
"sourceUrl": "http://covid19.sante.gov.dz/carte",
"lastUpdatedSource": "2020-10-23T15:00:00.000Z",
"lastUpdatedApify": "2020-10-24T12:00:00.000Z"
},
{
"infected": null,
"tested": null,
"recovered": null,
"deceased": null,
"country": "Austria",
"moreData": "https://api.apify.com/v2/key-value-stores/RJtyHLXtCepb4aYxB/records/LATEST?disableRedirect=true",
"historyData": "https://api.apify.com/v2/datasets/EFWZ2Q5JAtC6QDSwV/items?format=jsonamp;clean=1",
"lastUpdatedApify": "2020-11-07T20:30:00.000Z"
}
]
Я ищу, чтобы получить максимальное количество стран X, но только там имя. Кто-нибудь может помочь
function topXCountriesCasesName(num)
{
let countriesCases
let sortedCovidData = covid19JSON.sort((a,b)=> b.infected - a.infected )
for(let i = 0; i < num; i )
{
countriesCases.push(sortedCovidData.get(i).get(4))
}
return countriesCases
}
Ответ №1:
Вам не нужно использовать .get
:
const covid19JSON = [
{
"infected": 55630,
"tested": "NA",
"recovered": 38788,
"deceased": 1897,
"country": "Algeria",
"moreData": "https://api.apify.com/v2/key-value-stores/pp4Wo2slUJ78ZnaAi/records/LATEST?disableRedirect=true",
"historyData": "https://api.apify.com/v2/datasets/hi0DJXpcyzDwtg2Fm/items?format=jsonamp;clean=1",
"sourceUrl": "http://covid19.sante.gov.dz/carte",
"lastUpdatedSource": "2020-10-23T15:00:00.000Z",
"lastUpdatedApify": "2020-10-24T12:00:00.000Z"
},
{
"infected": 55632,
"tested": null,
"recovered": null,
"deceased": null,
"country": "Austria",
"moreData": "https://api.apify.com/v2/key-value-stores/RJtyHLXtCepb4aYxB/records/LATEST?disableRedirect=true",
"historyData": "https://api.apify.com/v2/datasets/EFWZ2Q5JAtC6QDSwV/items?format=jsonamp;clean=1",
"lastUpdatedApify": "2020-11-07T20:30:00.000Z"
}
]
function topXCountriesCasesName(num) {
let countriesCases = [];
let sortedCovidData = covid19JSON.sort((a,b) => b.infected - a.infected )
for(let i = 0; i < num; i ) {
countriesCases.push(sortedCovidData[i].country)
}
return countriesCases
}
console.log(topXCountriesCasesName(2));
Другой способ сделать это с помощью .slice
и .map
:
const covid19JSON = [
{
"infected": 55630,
"tested": "NA",
"recovered": 38788,
"deceased": 1897,
"country": "Algeria",
"moreData": "https://api.apify.com/v2/key-value-stores/pp4Wo2slUJ78ZnaAi/records/LATEST?disableRedirect=true",
"historyData": "https://api.apify.com/v2/datasets/hi0DJXpcyzDwtg2Fm/items?format=jsonamp;clean=1",
"sourceUrl": "http://covid19.sante.gov.dz/carte",
"lastUpdatedSource": "2020-10-23T15:00:00.000Z",
"lastUpdatedApify": "2020-10-24T12:00:00.000Z"
},
{
"infected": 55632,
"tested": null,
"recovered": null,
"deceased": null,
"country": "Austria",
"moreData": "https://api.apify.com/v2/key-value-stores/RJtyHLXtCepb4aYxB/records/LATEST?disableRedirect=true",
"historyData": "https://api.apify.com/v2/datasets/EFWZ2Q5JAtC6QDSwV/items?format=jsonamp;clean=1",
"lastUpdatedApify": "2020-11-07T20:30:00.000Z"
}
]
function topXCountriesCasesName(num) {
return covid19JSON
.sort((a,b) => b.infected - a.infected )
.slice(0, num)
.map(e => e.country);
}
console.log(topXCountriesCasesName(2));
Комментарии:
1. Большое спасибо!
2. @SeanMcavoy добро пожаловать. Пожалуйста, отметьте ответ как решение (кнопка галочки), если он решил вашу проблему, чтобы будущие посетители также извлекли из него выгоду.