javascript - 类似的 forEach 与 for 循环的不同行为

标签 javascript

我有以下代码块,每个代码块都有相同的用途。由于某种原因,for 循环产生的结果与 forEach 循环不同,我不完全确定原因。

this._domains.forEach(domain => {
    if ((userDomain.name === domain.domainName) || (userDomain.fullyQualifiedDomainName === domain.netBiosName) ||
        (userDomain.name === domain.netBiosName)) { return domain; }
    });
}
return null;
<小时/>
for (let index = 0; index < this._domains.length; index++) {
    if ((userDomain.name === this._domains[index].domainName) ||
        (userDomain.fullyQualifiedDomainName === this._domains[index].netBiosName) ||
        (userDomain.name === this._domains[index].netBiosName)) {
        return this._domains[index];
    }
}
return null;

第二个 for 循环给了我预期的结果,而第一个 forEach 循环似乎每次都会失败或变为 null。

我在这里错过了任何想法或事情吗?即使我不希望从迭代中创建一个新数组,这可能仍然是使用其他高阶技术(例如 mapfilter减少

谢谢

最佳答案

forEach 回调中的返回值是回调本身,而不是外部函数。

如果您尝试返回单个值,forEach 是错误的选择。使用find :

function myFunc( userDomain ) {

    return this._domains.find( domain =>
        userDomain.name === domain.domainName ||
        userDomain.fullyQualifiedDomainName === domain.netBiosName ||
        userDomain.name === domain.netBiosName );

}

或者,如果您将结果存储在 myFunc 内声明的变量中,则可以使用 forEach。

关于javascript - 类似的 forEach 与 for 循环的不同行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47930734/

相关文章:

javascript - Google Maps API 实现新配额 - 我的请求会会计入限制吗?

javascript - Javascript 中的原型(prototype)

javascript - Angular 2 没有 CompilerFactory 的提供者

javascript - jQuery 显示隐藏元素 - 在 ie7 中跳转

javascript - 从 csv 文件绘制数据

javascript - 单击筛选结果的按钮时,Puppeteer 超时超过 3000 毫秒

javascript - 使用 jQuery 的网格大小调整器

javascript - 更新函数是因为变量值改变了吗?

javascript - 在javascript中匹配字符串时的正则表达式问题

javascript - 如何在函数javascript中连接两个字符串变量?