lodash常用方法

Posted dylAlex

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lodash常用方法相关的知识,希望对你有一定的参考价值。

有关Array的方法:

1._.chunk(array, [size=1]),返回size长度数组组成的新数组

_.chunk([\'a\', \'b\', \'c\', \'d\'], 2);
// => [[\'a\', \'b\'], [\'c\', \'d\']]
 
_.chunk([\'a\', \'b\', \'c\', \'d\'], 3);
// => [[\'a\', \'b\', \'c\'], [\'d\']]
2. _.compact(array), 返回去除falsenull0""undefinedNaN的数组
_.compact([0, 1, false, 2, \'\', 3]);
// => [1, 2, 3]

3._.findIndex(array, [predicate=_.identity], [fromIndex=0]),返回迭代结果为true的第一个元素的索引

var users = [
  { \'user\': \'barney\',  \'active\': false },
  { \'user\': \'fred\',    \'active\': false },
  { \'user\': \'pebbles\', \'active\': true }
];
 
_.findIndex(users, function(o) { return o.user == \'barney\'; });
// => 0
 
// The `_.matches` iteratee shorthand.
_.findIndex(users, { \'user\': \'fred\', \'active\': false });
// => 1
 
// The `_.matchesProperty` iteratee shorthand.
_.findIndex(users, [\'active\', false]);
// => 0
 
// The `_.property` iteratee shorthand.
_.findIndex(users, \'active\');
// => 2

4. _.flatten(array),摊平数组一个维度,返回新的数组

_.flatten([1, [2, [3, [4]], 5]]);
// => [1, 2, [3, [4]], 5]

5. _.head(array),返回数组第一个元素

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

6._.union([arrays]), 返回只有唯一值得数组,返回新的数组

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

有关Collection的方法:

1._.flatMap(collection, [iteratee=_.identity]), 对集合的每个元素迭代,摊平迭代后的结果,返回新的数组

function duplicate(n) {
  return [n, n];
}
 
_.flatMap([1, 2], duplicate);
// => [1, 1, 2, 2]

2. _.groupBy(collection, [iteratee=_.identity]), 集合的元素经过迭代产生对象的key,key对应的value是产生key的那些元素,value是按顺序来的

_.groupBy([6.1, 4.2, 6.3], Math.floor);
// => { \'4\': [4.2], \'6\': [6.1, 6.3] }
 
// The `_.property` iteratee shorthand.
_.groupBy([\'one\', \'two\', \'three\'], \'length\');
// => { \'3\': [\'one\', \'two\'], \'5\': [\'three\'] }

3._.keyBy(collection, [iteratee=_.identity]), 集合的元素经过迭代产生对象的key,key对应的value是产生key的最后一个元素

var array = [
  { \'dir\': \'left\', \'code\': 97 },
  { \'dir\': \'right\', \'code\': 100 },
  { \'dir\': \'left11\', \'code\': 97 }
];

_.keyBy(array, function(o) {
  return String.fromCharCode(o.code);
});
// => {a: Object {dir: "left11", code: 97}, d: Object {dir: "right", code: 100}}

var array1 = [
  { \'dir\': \'left\', \'code\': 97 },
  { \'dir\': \'right\', \'code\': 100 }
];

_.keyBy(array1, \'dir\');
// => { \'left\': { \'dir\': \'left\', \'code\': 97 }, \'right\': { \'dir\': \'right\', \'code\': 100 } }

有关Function的方法:

1._.debounce(func, [wait=0], [options={}]),调用的函数func,多久调用一次wait,提供option表示是否应在等待超时的前边或者后边调用

jQuery(element).on(\'click\', _.debounce(sendMail, 300, {
  \'leading\': true,
  \'trailing\': false
}));

2._.throttle(func, [wait=0], [options={}]),调用的函数func,多久调用一次wait,提供option表示是否应在等待超时的前边或者后边调用

// Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.
var throttled = _.throttle(renewToken, 300000, { \'trailing\': false });
jQuery(element).on(\'click\', throttled);

有关Lang的方法

1._.clone(value),创建一个value的浅拷贝

var objects = [{ \'a\': 1 }, { \'b\': 2 }];
 
var shallow = _.clone(objects);
console.log(shallow[0] === objects[0]);
// => true

2._.cloneDeep(value),深拷贝

This method is like _.clone except that it recursively递归地 clones value.

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

有关Object的方法

1._.omit(object, [paths]),忽略object里面paths里面的属性,返回带有剩下属性的对象,是新对象

var object = { \'a\': 1, \'b\': \'2\', \'c\': 3 };
 
_.omit(object, [\'a\', \'c\']);
// => { \'b\': \'2\' }

2._.pick(object, [paths]),返回带有paths里面属性的对象,是新对象

var object = { \'a\': 1, \'b\': \'2\', \'c\': 3 };
 
_.pick(object, [\'a\', \'c\']);
// => { \'a\': 1, \'c\': 3 }

有关String的方法

1._.camelCase([string=\'\']),返回驼峰形式的

_.camelCase(\'Foo Bar\');
// => \'fooBar\'
 
_.camelCase(\'--foo-bar--\');
// => \'fooBar\'
 
_.camelCase(\'__FOO_BAR__\');
// => \'fooBar\'

2._.snakeCase([string=\'\']),返回下划线形式的

_.snakeCase(\'Foo Bar\');
// => \'foo_bar\'
 
_.snakeCase(\'fooBar\');
// => \'foo_bar\'
 
_.snakeCase(\'--FOO-BAR--\');
// => \'foo_bar\'

3._.trim([string=\'\'], [chars=whitespace]),移除空格或者特定字符

_.trim(\'  abc  \');
// => \'abc\'
 
_.trim(\'-_-abc-_-\', \'_-\');
// => \'abc\'
 
_.map([\'  foo  \', \'  bar  \'], _.trim);
// => [\'foo\', \'bar\']

有关Util的方法

1._.noop(),返回undefined

_.times(2, _.noop);
// => [undefined, undefined]

2._.times(n, [iteratee=_.identity]), 返回调用迭代器n次生成的结果构成的数组

_.times(3, String);
// => [\'0\', \'1\', \'2\']
 
 _.times(4, _.constant(0));
// => [0, 0, 0, 0]

以上是关于lodash常用方法的主要内容,如果未能解决你的问题,请参考以下文章

lodash常用方法

lodash常用方法1--查询

Lodash 常用方法

lodash常用方法

lodash常用方法2--修改

Lodash常用函数