如何从国家API中获取面积前十国家的对应名称?
解决方法
你当前的问题在于把国家的面积、名称拆分成了独立数组,当对面积数组排序后,原有的索引对应关系就被破坏了,没法再准确匹配到对应的国家名称。
正确的做法是直接对完整的国家对象数组进行处理,这样就能始终保留面积与国家名称的关联:
- 先过滤掉没有有效面积数据的国家(避免排序时出现异常);
- 对国家数组按面积从大到小排序;
- 截取前10个国家后,直接从对象中提取名称即可。
修改后的代码如下:
const countriesAPI = 'https://restcountries.com/v2/all' const fetchData = async () => { try { const response = await fetch(countriesAPI) const countries = await response.json() // 过滤存在有效面积的国家 const validCountries = countries.filter(country => country.area && country.area > 0) // 按面积降序排序,复制数组防止修改原数据 const sortedCountries = [...validCountries].sort((a, b) => b.area - a.area) // 获取面积最大的10个国家 const top10Largest = sortedCountries.slice(0, 10) // 提取名称和对应的面积(也可以直接使用top10Largest里的完整对象) const top10CountryNames = top10Largest.map(country => `${country.name} (面积: ${country.area} 平方公里)`) console.log('面积最大的10个国家:', top10CountryNames) } catch (err) { console.error(err) } } fetchData()
这样处理后,你不仅能拿到对应的国家名称,还能随时获取该国家的其他信息(比如语言、首都等),因为每个元素都是完整的国家对象,关联关系不会丢失。
内容的提问来源于stack exchange,提问作者Galo Flores
相关产品推荐
相关产品推荐

