香草 Javascript 过滤器功能在一行中完美运行,但在其他行中根本不起作用
Vanilla Javascript filter function works perfect in one line, but not work at all for other
我正在尝试使用 JavaScript.
过滤 JSON 文件
city = await cities.filter(ea => {
return ea.city.toLowerCase().includes(searcher.value.toLowerCase()); //example value Belgrade
});
admin = await cities.filter(eb => {
return eb.admin_name.toLowerCase().includes(searcher.value.toLowerCase()); //example value Beograd
});
虽然进入 city 变量的过滤器工作完美,但进入 admin 变量的过滤器 是第一个的复制粘贴,return 错误:
Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'toLowerCase')
即使我删除了 toLowerCase 函数,我也会得到同样的错误,但是(读取 'includes')
这是 JSON 文件的结构:
[
{
"city": "Tokyo",
"city_ascii": "Tokyo",
"lat": 35.6839,
"lng": 139.7744,
"country": "Japan",
"iso2": "JP",
"iso3": "JPN",
"admin_name": "Tōkyō",
"capital": "primary",
"population": 39105000,
"id": 1392685764
},
]
这仅仅意味着 admin_name
不存在,或者对于数组中的至少一个对象是 null
/undefined
。
为了支持这一点,您可以像这样使用 optional chaining:
admin = cities.filter(eb => {
return eb.admin_name?.toLowerCase()?.includes(searcher.value.toLowerCase()); //example value Beograd
});
附带说明一下,await
非 Promise
值只是 returns 那个值,所以它对你的情况毫无用处。
我正在尝试使用 JavaScript.
过滤 JSON 文件city = await cities.filter(ea => {
return ea.city.toLowerCase().includes(searcher.value.toLowerCase()); //example value Belgrade
});
admin = await cities.filter(eb => {
return eb.admin_name.toLowerCase().includes(searcher.value.toLowerCase()); //example value Beograd
});
虽然进入 city 变量的过滤器工作完美,但进入 admin 变量的过滤器 是第一个的复制粘贴,return 错误:
Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'toLowerCase')
即使我删除了 toLowerCase 函数,我也会得到同样的错误,但是(读取 'includes')
这是 JSON 文件的结构:
[
{
"city": "Tokyo",
"city_ascii": "Tokyo",
"lat": 35.6839,
"lng": 139.7744,
"country": "Japan",
"iso2": "JP",
"iso3": "JPN",
"admin_name": "Tōkyō",
"capital": "primary",
"population": 39105000,
"id": 1392685764
},
]
这仅仅意味着 admin_name
不存在,或者对于数组中的至少一个对象是 null
/undefined
。
为了支持这一点,您可以像这样使用 optional chaining:
admin = cities.filter(eb => {
return eb.admin_name?.toLowerCase()?.includes(searcher.value.toLowerCase()); //example value Beograd
});
附带说明一下,await
非 Promise
值只是 returns 那个值,所以它对你的情况毫无用处。