- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
为了练习,我正在从头开始学习下划线包含。代码中有一部分我无法表达或理解。该行的作用是:
“返回项目===目标;”
代码:
_.contains = function(collection, target) {
return _.reduce(collection, function(wasFound, item) {
if (wasFound) {
return true;
}
return item === target;
}, false);
};
最佳答案
它只是从回调返回一个 bool 值到reduce
。表达式 item === target
的结果是一个 bool 值(即 true
或 false
)。这是执行以下操作的一种快捷且(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
的新值。
这意味着只要 wasFound
为 false
,我们就会尝试查看下一个元素是否与传入的元素匹配。如果是 true
,这意味着我们已经找到了我们想要的元素,因此我们可以继续返回true
。
在我看来,该函数效率有点低,因为一旦找到要查找的元素,它就不会尽早爆发,并且无论如何都会遍历整个集合。
关于javascript - 下划线包含从头开始?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31816016/
我需要用这样的数据构建一个表: ┌────────┬───────────┬────────┐ │ ID │ Name │ Age │ ├────
我是一名优秀的程序员,十分优秀!