gpt4 book ai didi

javascript - 从匿名函数返回将不起作用,即使它不是异步的

转载 作者:行者123 更新时间:2023-12-01 04:06:40 25 4
gpt4 key购买 nike

我有以下功能:

function filterDesiredURLs(tweet) {
tweet.entities.urls.forEach((url) => {
desiredURLs.forEach((regexPattern) => {
if (regexPattern.test(url['expanded_url'])) {
console.log('hello, im returning');
return true;
}
})
})
}

我这样调用它:

console.log(filterDesiredURLs(tweet));

其中 tweet 是一个已定义的对象。我可以看到该函数确实正在返回,因为我在控制台中看到输出 hello, im returned,但是 console.log(filterDesiredURLs(tweet)); 打印 未定义。我希望这适用于作为异步操作的回调传递的匿名函数,但这不是异步的,因此返回应该有效。发生什么事了?

最佳答案

return 不能跨函数边界进行操作。它仅从最里面函数返回。做你想做的事,你可能想做 filterfind加上some :

function filterDesiredURLs(tweet) {
// First, you were missing a return in the outer function
// Without a return here, *this* function will return `undefined`
return tweet.entities.urls.filter(url => {
// We are using `filter` to reduce the URL list to only
// URLs that pass our test - this inner function needs to return
// a boolean (true to include the URL, false to exclude it)
return desiredURLs.some(regexPattern => {
// Finally, we use `some` to see if any of the regex patterns match
// This method returns a boolean value. If the function passed to it ever
// returns true, it terminates the loop and returns true
// Otherwise, it iterates over the entire array and returns false.
return regexPattern.test(url['expanded_url']);
});
});
}

关于javascript - 从匿名函数返回将不起作用,即使它不是异步的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41756009/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com