【发布时间】:2020-07-16 07:27:08
【问题描述】:
我正在准备一个天气应用程序,它会在我们输入城市名称时提供建议列表。
Json 文件格式如下:
{"coord":{"lon":-0.13,"lat":51.51},
"weather":[{"id":300,"main":"Drizzle","description":"light intensity drizzle","icon":"09d"}],
"base":"stations",
"main":{"temp":280.32,"pressure":1012,"humidity":81,"temp_min":279.15,"temp_max":281.15},
"visibility":10000,
"wind":{"speed":4.1,"deg":80},
"clouds":{"all":90},"dt":1485789600,
"sys":{"type":1,"id":5091,"message":0.0103,
"country":"GB",
"sunrise":1485762037,
"sunset":1485794875},
"id":2643743,
"name":"London",
"cod":200}
所以我对该功能的代码是:
inputcity.addEventListener("input",()=>getweather(inputcity.value));
const getweather=async searchtext=>{
const res=await fetch("https://api.openweathermap.org/data/2.5/weather?q="+inputcity.value+"&units=metric&appid=78a661b7c335021c7d85065aea3673be");
const cities= await res.json();
let matches=cities.filter(city=>{
const regex=new RegExp(`^${searchtext}`,'gi');
return city.name.match(regex);
});
console.log(matches);
};
我想要的是显示以相同字母开头的城市名称列表。
但它显示错误以下错误:
*Uncaught (in promise)TypeError: cities.filter is not a function*
因为这个 api 在嵌套对象而不是在对象数组中提供数据。
如何使用过滤器或任何方法让我的代码正常工作?
【问题讨论】:
-
不是
cities.filter(....)而不是data吗?你是从 API 中得到一个数组还是一个对象? -
@Stutje 是的,是城市。抱歉,我附上了一个 api 数据样本,它位于嵌套对象中
-
不是数组,反正只有一个城市!
标签: javascript json object filter