gpt4 book ai didi

javascript - 下划线包含从头开始?

转载 作者:行者123 更新时间:2023-12-02 15:51:30 25 4
gpt4 key购买 nike

为了练习,我正在从头开始学习下划线包含。代码中有一部分我无法表达或理解。该行的作用是:

“返回项目===目标;”

代码:

_.contains = function(collection, target) {

return _.reduce(collection, function(wasFound, item) {
if (wasFound) {
return true;
}
return item === target;
}, false);

};

最佳答案

它只是从回调返回一个 bool 值到reduce。表达式 item === target 的结果是一个 bool 值(即 truefalse)。这是执行以下操作的一种快捷且(IMO)更优雅的方式:

if(item === target) {
return true;
} else {
return false;
}

=== 是“严格等于”,这意味着它不会执行任何类型强制。这就是为什么 "2"== 2 将返回 true 因为 "2" 可以被强制转换为数字 2(反之亦然)。但是 "2"=== 2 将返回 false,因为它不执行任何类型强制,并且两个参数的类型不同。

reduce 函数的工作原理是迭代集合中的每个元素并计算每次迭代中也使用的某种值。

在初次调用 reduce 函数期间,wasFound 设置为 false(请注意传递的 false回调后对 reduce 的调用)。第一个 if 将不满足,因此该函数将执行 return 语句。返回的该值将是下一次迭代中 wasFound值。

这意味着只要 wasFoundfalse,我们就会尝试查看下一个元素是否与传入的元素匹配。如果是 true,这意味着我们已经找到了我们想要的元素,因此我们可以继续返回true

在我看来,该函数效率有点低,因为一旦找到要查找的元素,它就不会尽早爆发,并且无论如何都会遍历整个集合。

关于javascript - 下划线包含从头开始?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31816016/

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