兼容性警告
专注于 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]大多数方法移除
thisArgvar 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.4compatible)
_.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 方法:_.concat,_.differenceBy,_.differenceWith,_.flatMap,_
_.intersectionWith,_.join,_.pullAll,_.pullAllBy,_.reverse,_.sortedIndexBy,_.sortedIndexOf,
_.sortedLastIndexBy,_.sortedLastIndexOf,_.sortedUniq,_.sortedUniqBy,_
.unionBy,_.unionWith,_.uniqBy,_.uniqWith,_.xorBy, & _.xorWith
18 个 lang 方法:_.cloneDeepWith,_.cloneWith,_.eq,_.isArrayLike,_.isArrayLikeObject,_.isEqualWith,_.isInteger,
_.isLength,_.isMatchWith,_.isNil,_.isObjectLike,_.isSafeInteger,_.isSymbol,
_.toInteger,_.toLength,_.toNumber,_.toSafeInteger, & _.toString
13 个object :_.assignIn,_.assignInWith,_.assignWith,_
_.omitBy,_.pickBy,_.setWith,_.toPairs,_.toPairsIn, & _.unset
8 个 string 方法:_.lowerCase,_.lowerFirst,_.replace,_.split,_
8 个 utility 方法:_.cond,_.conforms,_.nthArg,_.over,
2 个 number 方法:_.clamp&_.subtract
1 个 chain 方法:_#next
1 个 collection 方法:_.sampleSize
添加 3 别名
_.extend作为_.assignIn的别名_.extendWith作为_.assignInWith的别名_.first作为_.head的别名移除 17 个别名
_.all,_.any,_.backflow,_.callback,_.collect,_.compose,_.contains,性能优化
开启
_.at,_.find&_.findLast的快速合并机制优化匹配方法,避免如果
object和source相同时进行深度爬行优化循环引用搜索
优化
_.isEqual,避免当数组或对象拥有不同长度时的堆栈爬行支持 Emoji
zero-width-joiners to string methods
Added support for astral symbols,
combining diacritical marks, dingbats, regional indicator symbols, unicode modifiers, variation selectors, &
功能性改进
添加_.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
windoworselfwhen 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的克隆队列充值迭代器的数据确保
_.randommin大于max时交换min&max确保
_.rangepreserves the sign ofstartof-0确保
_.reduce&_.reduceRight在数组分支中使用getIteratee修正
_.floor带precision参数时四舍五入的问题使
_(...)成为一个迭代器 & 可迭代的对象使
_.drop,_.take, & 从右迭代的方法强制将n由undefined转换为0
_.detect,_.foldl,_.foldr,_.include,_.inject,_.methods,_.object,_.#run,_.select, & _.unique
