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])
将数组和值连接成新数组。
javascriptvar 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])
按指定顺序对集合进行排序。
javascriptvar 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])
安全地获取对象属性,支持嵌套路径。
javascriptvar 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)
设置对象属性的值,支持嵌套路径。
javascriptvar 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])
递归合并对象。
javascriptvar 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])
创建一个由给定属性组成的对象。
javascriptvar object = { 'a': 1, 'b': '2', 'c': 3 }; _.pick(object, ['a', 'c']); // => { 'a': 1, 'c': 3 }
11. _.omit(object, [props])
创建一个排除给定属性的对象。
javascriptvar 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])
创建一个记忆化函数,缓存函数结果。
javascriptvar 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)
深度克隆值。
javascriptvar objects = [{ 'a': 1 }, { 'b': 2 }]; var deep = _.cloneDeep(objects); console.log(deep[0] === objects[0]); // => false
16. _.isEqual(value, other)
深度比较两个值是否相等。
javascriptvar 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的方法,以减少打包体积。