乐闻世界logo
搜索文章和话题

Lodash中有哪些最常用的方法?请举例说明它们的用法

2月18日 21:57

Lodash提供了大量实用的方法,以下是Lodash中最常用的方法及其详细说明:

数组操作方法

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

将数组分割成指定大小的块。

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

2. _.compact(array)

移除数组中的假值(false, null, 0, "", undefined, NaN)。

javascript
_.compact([0, 1, false, 2, '', 3]); // => [1, 2, 3]

3. _.concat(array, [values])

将数组和值连接成新数组。

javascript
var array = [1]; var other = _.concat(array, 2, [3], [[4]]); console.log(other); // => [1, 2, 3, [4]]

4. _.difference(array, [values])

创建一个不包含在给定数组中的值的新数组。

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

5. _.uniq(array)

创建一个去重后的数组。

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

6. _.orderBy(collection, [iteratees], [orders])

按指定顺序对集合进行排序。

javascript
var users = [ { 'user': 'fred', 'age': 48 }, { 'user': 'barney', 'age': 34 }, { 'user': 'fred', 'age': 40 }, { 'user': 'barney', 'age': 36 } ]; _.orderBy(users, ['user', 'age'], ['asc', 'desc']); // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]

对象操作方法

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

安全地获取对象属性,支持嵌套路径。

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

8. _.set(object, path, value)

设置对象属性的值,支持嵌套路径。

javascript
var object = { 'a': [{ 'b': { 'c': 3 } }] }; _.set(object, 'a[0].b.c', 4); console.log(object.a[0].b.c); // => 4 _.set(object, ['x', '0', 'y', 'z'], 5); console.log(object.x[0].y.z); // => 5

9. _.merge(object, [sources])

递归合并对象。

javascript
var object = { 'a': [{ 'b': 2 }, { 'd': 4 }] }; var other = { 'a': [{ 'c': 3 }, { 'e': 5 }] }; _.merge(object, other); // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }

10. _.pick(object, [props])

创建一个由给定属性组成的对象。

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

11. _.omit(object, [props])

创建一个排除给定属性的对象。

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

函数工具方法

12. _.debounce(func, [wait=0], [options])

创建一个防抖函数,在函数被调用后延迟执行。

javascript
// 避免窗口调整大小时过于频繁的调用 jQuery(window).on('resize', _.debounce(calculateLayout, 150));

13. _.throttle(func, [wait=0], [options])

创建一个节流函数,在指定时间间隔内最多执行一次。

javascript
// 避免滚动事件过于频繁的触发 jQuery(window).on('scroll', _.throttle(checkPosition, 100));

14. _.memoize(func, [resolver])

创建一个记忆化函数,缓存函数结果。

javascript
var object = { 'a': 1, 'b': 2 }; var other = { 'c': 3, 'd': 4 }; var values = _.memoize(_.values); values(object); // => [1, 2] values(other); // => [3, 4] object.a = 2; values(object); // => [1, 2] // 缓存的结果

实用工具方法

15. _.cloneDeep(value)

深度克隆值。

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

16. _.isEqual(value, other)

深度比较两个值是否相等。

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

17. _.isEmpty(value)

检查值是否为空。

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

18. _.isNil(value)

检查值是否为null或undefined。

javascript
_.isNil(null); // => true _.isNil(void 0); // => true _.isNil(NaN); // => false

字符串操作方法

19. _.camelCase([string=''])

将字符串转换为驼峰命名。

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

20. _.kebabCase([string=''])

将字符串转换为短横线命名。

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

总结

Lodash提供了丰富的方法来简化JavaScript开发,掌握这些常用方法可以大大提高开发效率。在实际项目中,建议根据需要按需引入Lodash的方法,以减少打包体积。

标签:Lodash