lodash常用方法汇总

lodash常用方法汇总

引入: import _ from 'lodash'

官方中文文档:https://www.lodashjs.com/

对象

_.get (object, path, [defaultValue])

说明

​ 根据 object对象的path路径获取值。 如果解析 value 是 undefined 会以 defaultValue 取代。

参数

  1. object (Object): 要检索的对象。
  2. path (Array|string): 要获取属性的路径。
  3. [defaultValue] (*): 如果解析值是 undefined ,这值会被返回。

返回

(*): 返回解析的值。

示例:

var object = { 'a': [{ 'b': { 'c': 3 } }] };
_.get(object, 'a[0].b.c'); // => 3
_.get(object, 'a.b.c', 'default'); // => 'default'
_.forIn (object, [iteratee=_.identity])

说明

​ 使用 iteratee 遍历对象的自身和继承的可枚举属性。 iteratee 会传入3个参数:(value, key, object)。 如果返回 falseiteratee 会 提前退出遍历。

参数

  1. object (Object): 要遍历的对象。
  2. [iteratee=_.identity] (Function): 每次迭代时调用的函数。

返回

(Object): 返回 object

function Foo() {
  this.a = 1;
  this.b = 2;
}
 
Foo.prototype.c = 3;
 
_.forIn(new Foo, function(value, key) {
  console.log(key);
});
// => Logs 'a', 'b', then 'c' (无法保证遍历的顺序)。

数组

_.chunk (array, [size=1])

说明

​ 将数组(array)拆分成多个 size 长度的区块,并将这些区块组成一个新数组。 如果array 无法被分割成全部等长的区块,那么最后剩余的元 素将组成一个区块。

参数:

  1. array (Array): 需要处理的数组
  2. [size=1] (number): 每个数组区块的长度

返回:

(Array): 返回一个包含拆分区块的新数组(注:相当于一个二维数组)。

_.chunk(['a', 'b', 'c', 'd'], 2);// => [['a', 'b'], ['c', 'd']] 

_.chunk(['a', 'b', 'c', 'd'], 3);// => [['a', 'b', 'c'], ['d']]
_.difference (array, [values])

说明

创建一个具有唯一array值的数组,每个值不包含在其他给定的数组中。(注:即创建一个新数组,这个数组中的值,为第一个数字(array 参数)排除了给定数组中的值。)该方法使用SameValueZero做相等比较。结果值的顺序是由第一个数组中的顺序确定。

注意: 不像_.pullAll,这个方法会返回一个新数组。

参数:

  1. array (Array): 要检查的数组。
  2. [values] (…Array): 排除的值。

返回值:

(Array): 返回一个过滤值后的新数组。

_.difference([3, 2, 1], [4, 2]);// => [3, 1]
_.intersection ([arrays])

说明:

创建唯一值的数组,这个数组包含所有给定数组都包含的元素,使用SameValueZero进行相等性比较。(注:可以理解为给定数组的交集)

参数:

  1. [arrays] (…Array): 待检查的数组。

返回值:

(Array): 返回一个包含所有传入数组交集元素的新数组。

_.intersection([2, 1], [4, 2], [1, 2]);// => [2]
_.union ([arrays])

说明:

创建一个按顺序排列的唯一值的数组。所有给定数组的元素值使用SameValueZero做等值比较。(注: arrays(数组)的并集,按顺序返回,返回数组的元素是唯一的)

参数:

  1. [arrays] (…Array): 要检查的数组。

返回:

(Array): 返回一个新的联合数组。

_.union([2], [1, 2]);// => [2, 1]
_.uniq (array)

**说明: **创建一个去重后的array数组副本。使用了SameValueZero 做等值比较。只有第一次出现的元素才会被保留。

参数:

  1. array (Array): 要检查的数组。

返回:

(Array): 返回新的去重后的数组。

_.uniq([2, 1, 2]);// => [2, 1]

集合

_.forEach (collection, [iteratee=_.identity])

说明:

​ 调用 iteratee 遍历 collection(集合) 中的每个元素, iteratee 调用3个参数: (value, index|key, collection)。 如果迭代函数(iteratee)显式 的返回 false ,迭代会提前退出。

参数:

  1. collection (Array|Object): 一个用来迭代的集合。
  2. [iteratee=_.identity] (Function): 每次迭代调用的函数。

返回

(*): 返回集合 collection

注意:

​ 与其他"集合"方法一样,类似于数组,对象的 “length” 属性也会被遍历。想避免这种情况,可以用_.forIn 或者_.forOwn 代替。

_([1, 2]).forEach(function(value) {
  console.log(value);
});
// => Logs `1` then `2`.
 
_.forEach({ 'a': 1, 'b': 2 }, function(value, key) {
  console.log(key);
});
// => Logs 'a' then 'b' (iteration order is not guaranteed).

_.orderBy (collection,[iteratees=[_.identity]],[orders])

说明:

​ 此方法类似于_.sortBy,除了它允许指定 iteratee(迭代函数)结果如何排序。 如果没指定 orders(排序),所有值以升序排序。 否则,指 定为"desc" 降序,或者指定为 “asc” 升序,排序对应值。

参数:

  1. collection (Array|Object): 用来迭代的集合。
  2. [iteratees=[_.identity]] (Array[]|Function[]|Object[]|string[]): 排序的迭代函数。
  3. [orders] (string[]): iteratees迭代函数的排序顺序。

返回:

(Array): 排序排序后的新数组。

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]]
_.size (collection)

说明: 返回collection(集合)的长度,如果集合是类数组或字符串,返回其 length ;如果集合是对象,返回其可枚举属性的个数。

参数:

  1. collection (Array|Object): 要检查的集合

返回:

(number): 返回集合的长度。

_.size([1, 2, 3]);// => 3

_.size({ 'a': 1, 'b': 2 });// => 2 

_.size('pebbles');// => 7

数学

_.max (array)

说明: 计算 array 中的最大值。 如果 array 是 空的或者假值将会返回 undefined

_.max([4, 2, 8, 6]);
// => 8
 
_.max([]);
// => undefined
_.maxBy (array, [iteratee=_.identity])

说明: 这个方法类似_.max 除了它接受 iteratee 来调用 array中的每一个元素,来生成其值排序的标准。 iteratee 会调用1个参数: (value)

参数

  1. array (Array): 要迭代的数组。
  2. [iteratee=_.identity] (Function): 调用每个元素的迭代函数。

示例

var objects = [{ 'n': 1 }, { 'n': 2 }];
 
_.maxBy(objects, function(o) { return o.n; });
// => { 'n': 2 }
 
// The `_.property` iteratee shorthand.
_.maxBy(objects, 'n');
// => { 'n': 2 }
_.round (number, [precision=0])

说明:根据 precision(精度) 四舍五入 number

参数

  1. number (number): 要四舍五入的数字。
  2. [precision=0] (number): 四舍五入的精度。
_.round(4.006);
// => 4
 
_.round(4.006, 2);
// => 4.01
 
_.round(4060, -2);
// => 4100

语言

_.isEqual (value, other)

说明: 执行深比较来确定两者的值是否相等。

参数:

  1. value (*): 用来比较的值。
  2. other (*): 另一个用来比较的值。

返回

(boolean): 如果 两个值完全相同,那么返回 true,否则返回 false

var object = { 'a': 1 };
var other = { 'a': 1 };
 
_.isEqual(object, other);
// => true
 
object === other;
// => false
_.cloneDeep (value)

说明: 这个方法类似_.clone,除了它会递归拷贝 value。(注:也叫深拷贝)

参数:

  1. value (*): 要深拷贝的值。

返回:

(*): 返回拷贝后的值。

var objects = [{ 'a': 1 }, { 'b': 2 }]; var deep = _.cloneDeep(objects);console.log(deep[0] === objects[0]);// => false
_.isEmpty (value)

说明:

​ 检查 value 是否为一个空对象,集合,映射或者set。 判断的依据是除非是有枚举属性的对象,length 大于 0 的 arguments object, array, string 或类jquery选择器。

​ 对象如果被认为为空,那么他们没有自己的可枚举属性的对象。

​ 类数组值,比如arguments对象,array,buffer,string或者类jQuery集合的length0,被认为是空。类似的,map(映射)和set 的size0,被认为是空。

参数:

  1. value (*): 要检查的值。

返回:

(boolean): 如果 value 为空,那么返回 true,否则返回 false

_.isEmpty(null);
// => true
 
_.isEmpty(true);
// => true
 
_.isEmpty(1);
// => true
 
_.isEmpty([1, 2, 3]);
// => false
 
_.isEmpty({ 'a': 1 });
// => false

实用函数

_.range( [start=0], end, [step=1])

说明:

​ 创建一个包含从 startend,但不包含 end 本身范围数字的数组。 如果 start 是负数,而 endstep 没有指定,那么 step-1 为开始。 如果 end 没有指定,start 设置为 0。 如果 end 小于 start ,会创建一个空数组,除非指定了 step

注意: JavaScript 遵循 IEEE-754 标准处理无法预料的浮点数结果。

  1. [start=0] (number): 开始的范围。
  2. end (number): 结束的范围。
  3. [step=1] (number): 范围的增量 或者 减量。

返回:

(Array): 返回范围内数字组成的新数组。

_.range(4);
// => [0, 1, 2, 3]
 
_.range(-4);
// => [0, -1, -2, -3]
 
_.range(1, 5);
// => [1, 2, 3, 4]
 
_.range(0, 20, 5);
// => [0, 5, 10, 15]
 
_.range(0, -4, -1);
// => [0, -1, -2, -3]
 
_.range(1, 4, 0);
// => [1, 1, 1]
 
_.range(0);
// => []

_.truncate ([string=''], [options=])

说明:

​ 截断string字符串,如果字符串超出了限定的最大值。 被截断的字符串后面会以 omission 代替,omission 默认是 “…”。

​ (PS:截取指定长度后加… 用于处理标题过长再好不过)

参数:

  1. [string=''] (string): 要截断的字符串。
  2. [options=] (Object): 选项对象。
  3. [options.length=30] (number): 允许的最大长度。
  4. [options.omission='...'] (string): 超出后的代替字符。
  5. [options.separator] (RegExp|string): 截断点。

返回(string): Returns the truncated string.

_.truncate('hi-diddly-ho there, neighborino');
// => 'hi-diddly-ho there, neighbo...'
 
_.truncate('hi-diddly-ho there, neighborino', {
  'length': 24,
  'separator': ' '
});
// => 'hi-diddly-ho there,...'
 
_.truncate('hi-diddly-ho there, neighborino', {
  'length': 24,
  'separator': /,? +/
});
// => 'hi-diddly-ho there...'
 
_.truncate('hi-diddly-ho there, neighborino', {
  'omission': ' [...]'
});
// => 'hi-diddly-ho there, neig [...]'

_.isFunction (value)

说明: 检查 value 是否是 Function 对象。

参数:

  1. value (*): 要检查的值

返回:

(boolean): 如果 value 是一个函数,那么返回 true,否则返回 false

_.isFunction(_);
// => true
 
_.isFunction(/abc/);
// => false
  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值