以下代码
const endpoint = 'https://raw.githubusercontent.com/Hipo/university-domains-list/master/world_universities_and_domains.json';
const universities = [];
fetch(endpoint)
.then(results => results.json())
.then(data => universities.push(...data));
console.log(universities);
function findMatches(wordToMatch, universities) {
return universities.filter(uni => {
const regex = new RegExp(wordToMatch, 'gi');
return uni.name.match(regex)
})
}
export default findMatches;
返回下面的错误
'未捕获的TypeError:无法读取未定义的'filter'属性'
我可以使用控制台记录数据。日志(大学)。那为什么我不能过滤掉呢?仅供参考数据是一个对象数组。非常感谢您的帮助。非常感谢。
我只是想让每个人都知道我终于成功了。我必须安装babel polyfill和babel preset env,并将其添加到网页包中,以使UglifyJS与async await一起工作,并优化捆绑包的大小。
出于某种原因,我不得不使用async await而不是常规的promise来将HTML呈现到DOM中,不知道为什么。无论如何,以下是最终按预期工作的代码:
UniFetch.js
const endpoint = 'https://raw.githubusercontent.com/Hipo/university-domains-list/master/world_universities_and_domains.json';
const universities = [];
const promise = fetch(endpoint)
.then(blob => blob.json())
.then(data => universities.push(...data.slice(8286, 8456)));
function findMatches(wordToMatch) {
return promise.then(() => universities.filter(uni => {
const regex = new RegExp(wordToMatch, 'gi');
return uni.name.match(regex)
}));
}
async function displayMatches() {
searchResults.innerHTML = await findMatches(this.value)
.then(arr => arr.map(uni => {
return `
<li>${uni.name}</li>
`
}));
}
const searchInput = document.querySelector("input[name='unisearch']");
const searchResults = document.querySelector('.unisearch__results');
searchInput.addEventListener('change', displayMatches);
searchInput.addEventListener('keyup', displayMatches);
export default findMatches
应用程序。js
import FindMatches from '../UniFetch.js'
FindMatches()
希望这能帮助一些人实现一个typeahead、自动完成API获取。
您需要删除大学
作为findMatches
函数中的参数,因为它覆盖了本地大学
变量的值:
function findMatches(wordToMatch) {
return universities.filter(uni => {
const regex = new RegExp(wordToMatch, 'gi');
return uni.name.match(regex)
})
}
然后,您可以继续使用findMatches
功能,如下所示:
findMatches("hi") // returns a filtered array
编辑:
您的代码中有一个竞争条件,其中findMatches
可能在fetch
完成之前被调用。要解决此问题,findMatches
应返回如下promise:
const endpoint = 'https://raw.githubusercontent.com/Hipo/university-domains-list/master/world_universities_and_domains.json';
const universities = [];
const promise = fetch(endpoint)
.then(results => results.json())
.then(data => universities.push(...data));
console.log(universities);
function findMatches(wordToMatch) {
return promise.then(() => universities.filter(uni => {
const regex = new RegExp(wordToMatch, 'gi');
return uni.name.match(regex)
}));
}
findMatches("hi").then(arr => console.log(arr));
问题内容: 我知道这是一个很普遍的问题,我在Stack Overflow和其他网站(包括datatables网站)上阅读了所有类似的问题。 为了澄清,我正在使用 PHP Codeigniter 物质学 我还确保我正确接收了JSON数组: 我的HTML表格如下所示: 这是我的功能: 我得到的错误是 未捕获的TypeError:无法读取未定义的属性’length’ 问题答案: 原因 此错误通常意味着j
问题内容: Angular.js v1.0.6 进行$ http.post并收到非200的请求时(本例为401) Angular引发以下错误: 而且永远不要调用回调或errback使得无法处理响应。 难道我做错了什么?成功回叫将在提供合法凭据时按预期方式被调用。 200回应: 401回应: 此外,如果我采用普通的Promise语法来支持.success()快捷方式,则会得到一些有趣的行为: 问题答
我在拼接阵列时遇到了问题。我试图拼接它来修改数组中元素的位置,但它返回时出现错误。 其中旧列表为: 和新列表:
问题内容: 我正在尝试使用移动应用程序做一个简单的hello world firebase函数,我想记录用户ID,以便可以看到该函数确实起作用。这是我当前的JavaScript代码: 当新数据写入特定的数据库表时,它会触发,但是会出现此错误: 通知数据库如下所示: 问题答案: 您需要安装最新的firebase-functions和firebase-admin: 为了能够使用新的API,请在此处查看
我是Firebase函数的新手,在官方文档中看到了一些变化,但是当我在做一个通知系统时,当我试图获取我的令牌id时,它抛出了这个错误。 我的代码 错误 无法在导出处读取未定义的属性“val”.js user_code。(/user_code/node_modules/火库函数/库/云函数.js:112:27) 在下一个 (本机) 在 /user_code/node_modules/火基函数/库/云
为什么我得到这个错误不能读取未定义的触摸属性? 为什么它不能读取,但它可以读取 当我们使用