Lodash 4.0.0 更新文档
<sub>v4.0.0</sub>
2016 年 1 月 12 日 — Diff — Docs
兼容性警告
-
专注于 npm,移除 Bower & Component 包支持
-
放弃对 IE 6-8 的支持
-
令
_.forEach
,_.forIn
,_.forOwn
, &_.times
隐式结束链式调用队列var wrapped = _([1, 2, 3]); // 在 3.10.1 wrapped.forEach(function(n) { console.log(n); }); // → returns the lodash wrapper without logging until `value` is called // → 在 `value` 调用之前返回 lodash 包装器(并不会打印记录) wrapped.forEach(function(n) { console.log(n); }).value(); // → logs each value from left to right and returns the array // → 从左到右记录每个值,并返回该数组 // 在 4.0.0 wrapped.forEach(function(n) { console.log(n); }); // → logs each value from left to right and returns the array // → 从左到右记录每个值,并返回该数组
-
移除模块路径的分类名
// in 3.10.1 var chunk = require('lodash/array/chunk'); // in 4.0.0 var chunk = require('lodash/chunk');
-
移除
_.pluck
,使用_.map
迭代器简写代替var objects = [{ 'a': 1 }, { 'a': 2 }]; // in 3.10.1 _.pluck(objects, 'a'); // → [1, 2] _.map(objects, 'a'); // → [1, 2] // in 4.0.0 _.map(objects, 'a'); // → [1, 2]
-
大多数方法移除
thisArg
var objects = [{ 'a': 1 }, { 'a': 2 }]; var context = { 'b': 5 }; function callback(item) { return item.a + this.b; } // in 3.10.1 _.map(objects, callback, context); // in 4.0.0 _.map(objects, _.bind(callback, context));
-
将
_.max
&_.min
拆分成 _.maxBy & _.minByvar array = [1, 2, 3], objects = [{ 'a': 1 }, { 'a': 2 }]; // in 3.10.1 _.max(array); // → 3 _.max(objects, 'a'); // → { 'a': 2 } _.min(array); // → 1 _.min(objects, 'a'); // → { 'a': 1 } // in 4.0.0 _.max(array); // → 3 _.maxBy(objects, 'a'); // → { 'a': 2 } _.min(array); // → 1 _.minBy(objects, 'a'); // → { 'a': 1 }
-
移除方法
- 移除
_.support
- 移除
_.findWhere
,使用_.find
迭代器简写代替 - 移除
_.where
,使用_.filter
迭代器简写代替 - 移除
_.pluck
,使用_map
迭代器简写代替
- 移除
-
方法名变更
_.first
更名为_.head
_.indexBy
更名为_.keyBy
_.invoke
更名为_.invokeMap
_.modArgs
更名为_.overArgs
_.padLeft
&_.padRight
更名为_padStart
&_.padEnd
_.pairs
更名为_.toPairs
_.rest
更名为_.tail
_.restParam
更名为_.rest
_.sortByOrder
更名为_.orderBy
_.trimLeft
&_.trimRight
更名为_.trimStart
&_.trimEnd
_.trunc
更名为_.truncate
-
拆分方法
- 从
_.indexOf
&_.lastIndexOf
拆分出_.sortedIndexOf
&_.sortedLastIndexOf
- 从
_.max
&_.min
拆分出_.maxBy
&_.minBy
- 从
_.omit
&_.pick
拆分出_.omitBy
&_.pickBy
- 从
_.sample
拆分出_.sampleSize
- 从
_.sortedIndex
拆分出_.sortedIndexBy
- 从
_.sortedLastIndex
拆分出_.sortedLastIndexBy
- 从
_.uniq
拆分出_.sortedUniq
,_.sortedUniqBy
, &_.uniqBy
- 从
-
将
_.sortByAll
并入_.sortBy
-
变更
_.at
的类别为 “Object” -
变更
_.bindAll
的类别为 Utility -
令 "By" 方法的迭代器只提供一个参数
-
令
_.capitalize
会转换第一个字符为大写 & 其他字符为小写 -
令
_.functions
返回自有方法的方法名名 -
令
_.words
默认可链式调用 -
_.clone
&_.flatten
移除isDeep
参数 -
当未指定方法名时,移除
_.bindAll
绑定所有方法的支持 -
_.before
&_.after
移除func
-第一个参数前面
低风险兼容性警告
_.debounce
,_.mixin
, &_.throttle
移除布尔值options
参数支持_.orderBy
移除布尔值orders
参数的支持- 令
_.max
,_.min
, &_.sum
只支持数组 _.template
移除传统options
参数签名- 简化
_.escapeRegExp
,以向已停止的 ES7 提案对齐
明显的变更
-
4 kB (gzipped) core build (65 个方法; Backbone v1.2.4 compatible)<br>
_.assignIn
,_.before
,_.bind
,_.chain
,_.clone
,_.compact
,_.concat
,_.create
,_.defaults
,_.defer
,_.delay
,_.each
,_.escape
,_.every
,_.filter
,_.find
,_.first
,_.flatten
,_.flattenDeep
,_.forEach
,_.has
,_.head
,_.identity
,_.indexOf
,_.invokeMap
,_.isArguments
,_.isArray
,_.isBoolean
,_.isDate
,_.isEmpty
,_.isEqual
,_.isFinite
,_.isFunction
,_.isNaN
,_.isNull
,_.isNumber
,_.isObject
,_.isRegExp
,_.isString
,_.isUndefined
,_.iteratee
,_.keys
,_.last
,_.map
,_.max
,_.min
,_.mixin
,_.negate
,_.noConflict
,_.noop
,_.now
,_.once
,_.pick
,_.reduce
,_.result
,_.size
,_.slice
,_.some
,_.sortBy
,_.tap
,_.thru
,_.toArray
,_.uniqueId
,_.value
, &_.values
-
新增 80 个方法
-
23 个 array 方法:<br> _.concat, _.differenceBy, _.differenceWith, _.flatMap, _.fromPairs, _.intersectionBy, _.intersectionWith, _.join, _.pullAll, _.pullAllBy, _.reverse, _.sortedIndexBy, _.sortedIndexOf, _.sortedLastIndexBy, _.sortedLastIndexOf, _.sortedUniq, _.sortedUniqBy, _.unionBy, _.unionWith, _.uniqBy, _.uniqWith, _.xorBy, & _.xorWith
-
18 个 lang 方法:<br> _.cloneDeepWith, _.cloneWith, _.eq, _.isArrayLike, _.isArrayLikeObject, _.isEqualWith, _.isInteger, _.isLength, _.isMatchWith, _.isNil, _.isObjectLike, _.isSafeInteger, _.isSymbol, _.toInteger, _.toLength, _.toNumber, _.toSafeInteger, & _.toString
-
13 个object :<br> _.assignIn, _.assignInWith, _.assignWith, _.functionsIn, _.hasIn, _.invoke, _.mergeWith, _.omitBy, _.pickBy, _.setWith, _.toPairs, _.toPairsIn, & _.unset
-
8 个 string 方法:<br> _.lowerCase, _.lowerFirst, _.replace, _.split, _.upperCase, _.upperFirst, _.toLower, & _.toUpper
-
8 个 utility 方法:<br> _.cond, _.conforms, _.nthArg, _.over, _.overEvery, _.overSome, _.rangeRight, & _.toPath
-
2 个 number 方法:<br> _.clamp & _.subtract
-
1 个 chain 方法:<br> _#next
-
1 个 collection 方法:<br> _.sampleSize
- 添加 3 别名
_.extend
作为_.assignIn
的别名_.extendWith
作为_.assignInWith
的别名_.first
作为_.head
的别名
-
移除 17 个别名<br>
_.all
,_.any
,_.backflow
,_.callback
,_.collect
,_.compose
,_.contains
,_.detect
,_.foldl
,_.foldr
,_.include
,_.inject
,_.methods
,_.object
,_.#run
,_.select
, &_.unique
-
性能优化
- 开启
_.at
,_.find
&_.findLast
的快速合并机制 - 优化匹配方法,避免如果
object
和source
相同时进行深度爬行 - 优化循环引用搜索
- 优化
_.isEqual
,避免当数组或对象拥有不同长度时的堆栈爬行
- 支持 Emoji
- Added support for astral symbols, combining diacritical marks, dingbats, regional indicator symbols, unicode modifiers, variation selectors, & zero-width-joiners to string methods
- 功能性改进
- 添加 _.cond, _.conforms, _.flip, _.nthArg, _.over, _.overEvery, _.overSome, & _.unary
- 将
lodash-fp
移动到lodash
,使用require('lodash/fp')
作为不可变 iteratee-first data-last 方法
其他变更
- 为
_.memoize.Cache
添加clear
方法 - 为防反跳函数和节流阀函数添加
flush
方法 _.clone
,_.isEqual
, &_.toArray
支持 ES6 映射、集合 & 标记_.isEqual
支持数组缓存_.toArray
支持转换迭代器_.zipObject
支持深度路径- Changed UMD to export to
window
orself
when available regardless of other exports _.flow
&_.flowRight
现在可以接受一个函数数组- 确保 “Collection” 方法能将函数视为对象
- 确保防反跳方法
cancel
能够清除args
&thisArg
引用 - 确保
_.add
,_.subtract
, &_.sum
不会跳过NaN
值 - 确保
_.assign
,_.defaults
, &_.merge
强制将object
值转换为对象 - 确保使用
new
操作符调用时_.bindKey
绑定的函数时调用object[key]
- 确保
_.clone
能够将生成器视为函数 - 确保
_.clone
能够根据源对象的[[Prototype]]
进行克隆 - 确保
_.defaults
能够根据Object.prototype
分配属性 - 确保
_.defaultsDeep
不能将字符串并入数组 - 确保
_.defaultsDeep
&_.merge
不会修改源对象 - 确保
_.defaultsDeep
能够循环引用 - 确保
_.isFunction
对生成器函数能够返回true
- 确保
_.keys
在 Safari 9 的严格模式下将跳过 "length" 属性 - 确保
_.merge
能够直接布置类型数组 - 确保
_.merge
不能将字符串转换为数组 - 确保
_.merge
能够将纯粹对象合并到非纯粹对象中 - 确保
_#plant
的克隆队列充值迭代器的数据 - 确保
_.random
min
大于max
时交换min
&max
- 确保
_.range
preserves the sign ofstart
of-0
- 确保
_.reduce
&_.reduceRight
在数组分支中使用getIteratee
- 修正
_.floor
带precision
参数时四舍五入的问题 - 使
_(...)
成为一个迭代器 & 可迭代的对象 - 使
_.drop
,_.take
, & 从右迭代的方法强制将n
由undefined
转换为0