
安装和导入
浏览器中使用:
<script src="lodash.js">script>
通过 npm 或者 yarn 进行安装:
npm install lodash
或:
yarn add lodash
然后在代码中导入:
// 导入整个 Lodash 库
const _ = require('lodash');
// 或者按需导入特定函数
const { map, filter, sortBy } = require('lodash');
常用函数
_.map():用于对数组或对象的每个元素执行函数,并返回处理后的结果。
_.filter():根据指定条件过滤数组或对象的元素,并返回符合条件的结果。
_.sortBy():根据指定条件对数组或对象进行排序。
示例应用
数组操作:
const numbers = [4, 2, 7, 1, 9];
const mappedNumbers = _.map(numbers, num => num * 2);
// 输出: [8, 4, 14, 2, 18]
const filteredNumbers = _.filter(numbers, num => num > 5);
// 输出: [7, 9]
const sortedNumbers = _.sortBy(numbers);
// 输出: [1, 2, 4, 7, 9]
对象操作:
const user = {
name: 'Alice',
age: 28,
email: 'alice@example.com'
};
const userValues = _.values(user);
// 输出: ['Alice', 28, 'alice@example.com']
const userKeys = _.keys(user);
// 输出: ['name', 'age', 'email']
链式调用(Chaining)
Lodash 支持链式调用,这意味着你可以在一个对象上连续应用多个函数。这种方式使得代码更加流畅和易读。
const result = _.chain(numbers)
.map(num => num * 2)
.filter(num => num > 5)
.sortBy()
.value();
// 输出: [4, 8, 14, 18]
对象深拷贝
Lodash 提供了 _.cloneDeep() 函数,用于实现深拷贝对象,防止对象引用传递导致的副作用。
const originalObject = { a: 1, b: { c: 2 } };
const clonedObject = _.cloneDeep(originalObject);
// 修改 clonedObject 不会影响 originalObject
clonedObject.b.c = 3;
console.log(originalObject.b.c); // 输出: 2
函数组合
使用 _.flow 或 _.flowRight 函数,你可以将多个函数组合成一个新的函数,方便复杂操作的处理。
const add = x => x + 2;
const multiply = x => x * 3;
const subtract = x => x - 5;
const complexOperation = _.flow([add, multiply, subtract]);
console.log(complexOperation(5)); // 输出: 16
Memoization(记忆化)
Lodash 的 _.memoize 函数可以用于缓存函数的结果,以提高函数执行的性能。
const expensiveOperation = (param) => {
// 一些昂贵的计算
return result;
};
const memoizedOperation = _.memoize(expensiveOperation);
// 第一次调用会执行昂贵的计算,并缓存结果
console.log(memoizedOperation('input'));
// 后续调用相同输入参数时,直接返回缓存的结果,避免重复计算
console.log(memoizedOperation('input'));
Currying(柯里化)
Lodash 中的 _.curry 函数可以将一个多参数的函数转化为一系列单参数函数,这有助于创建更具灵活性的函数。
const multiply = (a, b, c) => a * b * c;
const curriedMultiply = _.curry(multiply);
const partiallyApplied = curriedMultiply(2);
const result = partiallyApplied(3)(4);
console.log(result); // 输出: 24