简单介绍数组
Lodash 是一个一致性、模块化、高性能的 JavaScript 实用工具库。
Lodash 中集成了不少方法,安全可靠,不再用本身造轮子了。
经常使用方法汇总安全
import _ from 'lodash'; // 引入
_.get(object, path, [defaultValue]);
说明:根据 object对象的path路径获取值。 若是解析 value 是 undefined 会以 defaultValue 取代。 示例: var object = { 'a': [{ 'b': { 'c': 3 } }] }; _.get(object, 'a[0].b.c'); // => 3 _.get(object, 'a.b.c', 'default'); // => 'default'
_.forIn(object, [iteratee=_.identity]) | _.forEach(collection, [iteratee=_.identity]);
说明:使用 iteratee 遍历对象的自身和继承的可枚举属性。 iteratee 会传入3个参数:(value, key, object)。 若是返回 false,iteratee 会提早退出遍历。 示例: var users = { 'fred': { 'user': 'fred', 'age': 40 }, 'pebbles': { 'user': 'pebbles', 'age': 1 } }; _.forIn(users, (value, key) => console.log(key, value)) _.forIn(users, (value, key, object) => { if(key == 'fred') return false; // 返回false,退出遍历 })
_.defaults(object, [sources]);
说明:分配来源对象的可枚举属性到目标对象全部解析为 undefined 的属性上。 来源对象从左到右应用。 一旦设置了相同属性的值,后续的将被忽略掉。 示例: _.defaults({}, {title: '124'}, {title: '默认', callback: () => {}}); // {title: '124', callback: f} // 若是想深度使用默认值,可使用defaultsDeep (封装组件时使用较多) _.defaultsDeep({}, {title: '124', props: {b: 1}}, {title: '默认', props: {a:1, b:2}}); // {title: '124', props: {a:1, b:1}}
_.max(array) | _.maxBy(array, [iteratee=_.identity]);
说明:计算 array 中的最大值。 若是 array 是 空的或者假值将会返回 undefined。 示例: _.max([4, 2, 8, 6]); // => 8 var objects = [{ 'n': 1 }, { 'n': 2 }]; _.maxBy(objects, o => o.n); // => { 'n': 2 } _.maxBy(objects, 'n'); // => { 'n': 2 }
_.chunk(array, [size=1]);
说明:将数组(array)拆分红多个 size 长度的区块,并将这些区块组成一个新数组。 示例: _.chunk(['a', 'b', 'c', 'd'], 2); // => [['a', 'b'], ['c', 'd']] _.chunk(['a', 'b', 'c', 'd'], 3); // => [['a', 'b', 'c'], ['d']]
_.difference(array, [values]);
说明:建立一个具备惟一array值的数组,每一个值不包含在其余给定的数组中。 示例: _.difference([3, 2, 1], [4, 2]); // => [3, 1]
_.intersection([arrays]);
说明:建立惟一值的数组,这个数组包含全部给定数组都包含的元素(交集)。 示例: _.intersection([2, 1], [4, 2], [1, 2]); // => [2]
_.union([arrays]);
说明:建立一个按顺序排列的惟一值的数组(并集)。 示例: _.union([1], [3, 1, 2], [2, 4]); // => [1, 3, 2, 4]
_.uniq(array);
说明:建立一个去重后的array数组副本(去重)。 示例: _.uniq([2, 1, 2]); // => [2, 1]
_.groupBy(collection, [iteratee=_.identity]);
说明:建立一个对象,key 是 iteratee 遍历 collection(集合) 中的每一个元素返回的结果(数据分组)。 示例: var arr = [ {key: 2, value: 1}, {key: 2, value: 3}, {key: 1, value: 2}, ]; _.groupBy(arr, item => item.key); // => {1: [{key: 1, value: 2}], 2: [{key: 2, value: 1}, {key: 2, value: 3}]}
备注: 没法保证数据还原成数组后和原来的顺序保持一致,若是要保证数据一致性,参考以下方法:dom
_.orderBy(collection, [iteratees=[_.identity]], [orders]);
说明:此方法相似于 _.sortBy,除了指定 iteratee(迭代函数),还支持结果如何排序。 示例: var users = [ { 'user': 'fred', 'age': 48 }, { 'user': 'barney', 'age': 34 }, { 'user': 'fred', 'age': 40 }, { 'user': 'barney', 'age': 36 } ]; // 以 `user` 升序排序 再 `age` 以降序排序。 _.orderBy(users, ['user', 'age'], ['asc', 'desc']); // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]
_.partition(collection, [predicate=_.identity]);
说明:建立一个分红两组的元素数组,第一组包含predicate(断言函数)返回为 truthy(真值)的元素,第二组包含predicate(断言函数)返回为 falsey(假值)的元素。 示例: var users = [ { 'user': 'p1', 'active': false }, { 'user': 'p2', 'active': true }, { 'user': 'p3', 'active': false } ]; _.partition(users, user => user.active); // => [[{user: 'p2', active: true}], [{user: 'p1', active: false}, {user: 'p3', active: false}]]
_.size(collection);
说明:返回collection(集合)的长度,若是集合是类数组或字符串,返回其 length ;若是集合是对象,返回其可枚举属性的个数。 示例: _.size([1, 2, 3]); // => 3 _.size({ 'a': 1, 'b': 2 }); // => 2 (经常使用) _.size('pebbles'); // => 7
_.cloneDeep(value);
说明:这个方法相似 _.clone,除了它会递归拷贝 value。(也叫深拷贝)。 示例: var objects = [{ 'a': 1 }, { 'b': 2 }]; var deep = _.cloneDeep(objects); console.log(deep[0] === objects[0]); // => false
_.isEqual(value, other);
说明:执行深比较来肯定二者的值是否相等。 示例: var object = { 'a': 1 }; var other = { 'a': 1 }; _.isEqual(object, other); // => true
_.random([lower=0], [upper=1], [floating]);
说明:产生一个包括 lower 与 upper 之间的数。 示例: _.random(0, 5);
_.random([lower=0], [upper=1], [floating]);
说明:产生一个包括 lower 与 upper 之间的数。 示例: _.random(0, 5);
_.round(number, [precision=0]);
说明:根据 precision(精度) 四舍五入 number。 示例: _.round(4.006); // => 4 _.round(4.06, 1); // => 4.1 _.round(4.006, 2); // => 4.01