函数式编程 lodash 常用api
1、forEach
_.forEach({ 'a': 1, 'b': 2 }, function(value, key) { console.log(key); }); _.forEach([3,4], function(value) { console.log(value); });
2、filter
var users = [{ 'user': 'barney', 'age': 36, 'active': true }, { 'user': 'fred', 'age': 40, 'active': false } ]; var usersNew = _.filter(users, function(o) { return !o.active; }) console.log(usersNew) var usersNew2 = _.filter(users, {'active': true }) console.log(usersNew2) var usersNew3 = _.filter(users, ['active', false]) console.log(usersNew3) //active 值为true var usersNew4 = _.filter(users, 'active') console.log(usersNew4)
3、random
_.random([min=0], [max=1], [floating])
产生一个包括 min
与 max
之间的数。 如果只提供一个参数返回一个0到提供数之间的数。 如果 floating
设为 true,或者 min
或 max
是浮点数,结果返回浮点数。
4、深拷贝_.cloneDeep
5、扩展对象_.assign
6、去掉对象属性_.omit
7、从某个对象中选择部分属性组成新的对象 _.pick
8、排序_.orderBy
var users = [{ 'user': 'fred', 'age': 48 }, { 'user': 'barney', 'age': 34 }, { 'user': 'fred', 'age': 42 }, { 'user': 'barney', 'age': 36 } ]; console.log(_.orderBy(users, ['age'], ['desc']))
9 、函数执行N次
_.times(n, [iteratee=_.identity])
调用 iteratee N 次,每次调用返回的结果存入到数组中。 iteratee 会传入1个参数:(index)。
console.log(_.times(3, String))
10、等差数组
console.log(_.range(0, 20, 5)) // [0, 5, 10, 15]
11、isEmpty
检查 value
是否为空。 判断的依据是除非是有枚举属性的对象,length 大于 0
的 arguments
object, array, string 或类jquery选择器。
12.take
_.take(array, [n=1])
从数组的起始元素开始提取 N 个元素。(如可实现分页)
_.take([1, 2, 3]); // => [1] _.take([1, 2, 3], 2); // => [1, 2] _.take([1, 2, 3], 5); // => [1, 2, 3] _.take([1, 2, 3], 0); // => []
13、
_.reject(collection, [predicate=_.identity])
反向版 _.filter
,这个方法返回 predicate
检查为非真值的元素。
14、_.assign
var a = { a: 1 }, b = { b: 2 }, c = { c: 3 }; var d = {}; var d = _.assign(d, a, b, c); console.log(a) console.log(b) console.log(c) console.log(d)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通