underscore.js 源码分析(三)
_.some
_.contains
_.invoke
_.pluck
_.max
_.some
实例
_.some(list, [predicate], [context])
遍历 list
中的元素, 只要其中有一个元素通过 predicate
, 那么就返回为 true
源码分析
1 | _.some = _.any = function(obj, predicate, context) { |
_.contains
实例
_.contains(list, value, [fromIndex])
如果在 list
中包含有 value
值,那么返回为 true
fromIndex
表示开始进行检索的位置。如果 list
是数组, 检查数组中是否包含有对应的 value
值如果 list
是对象, 检查对象中的值是否有存在的 value
值自己写的代码:1 | function contain(obj, value, fromIndex) { |
源码分析
1 | _.contains = _.includes = _.include = function(obj, target, fromIndex) { |
_.invoke
计算机术语中: invoke : [ɪnˈvoʊk] 乞求,借助于 调用【计算机】
实例
_.invoke(list, methodName, *arguments)
在 list
的每一个元素上执行 methodName
方法。 argument
用于将使用 _.invoke
调用 methodName
方法的时候传递的函数。1 | let list = [[1, 4, 3]]; |
源码分析
实现这个功能的源码如下:1 | _.invoke = function(obj, method) { |
_.pluck
pluck 拔掉,摘,拉
_.pluck(list, propertyName)
实例
使用_.pluck
用于获取到数组对象中的对应属性的所有的值。对于对象中不存在的属性返回 undefined
1 | var stooges = [{name: 'moe', age: 40}, {name: 'larry', age: 50}, {name: 'curly', age: 60}]; |
pluck
函数如下:1 | function pluck(list, name) { |
源码分析
1 | _.pluck = function(obj, key) { |
1 | _.property = function(key) { |
_.max
_.max(list, [iteratee], [context])
返回 list
中的最大值。1 | _.max = function(obj, iteratee, context) { |
- 在js 中关于运算符优先级的问题:
逻辑
&&
(与) 大于 逻辑 或||
- 上面有一段程序如下:
if (computed > lastComputed || computed === -Infinity && result === -Infinity)
这段话翻译为中文就是如果满足computed === -Infinity && result === -Infinity
或者computed > lastComputd
的时候,进行动作。