常用的lodash方法

365bet赌城 ⌚ 2026-06-23 10:22:55 👤 admin 👁️ 9344 ❤️ 111
常用的lodash方法

1.chunk,将数组进行切分。

const arr = [1,2,3,4,5,6,7,8,9];

_.chunk(arr,2);

// =>[[1,2],[3,4],[5,6],[7,8],[9]]

这个函数把数组按照一定的长度分开,返回新的数组。(片段化数组)

2.compact,去除假值。(将所有的空值,0,NaN过滤掉)

_.compact(['1','2',' ',0])

// => ['1','2']对应的还有一个数组去重函数,这在实际的开发中很有作用。

3.filter和reject,过滤集合,传入匿名函数。(二者放在一起讨论的原因是,两个函数类似但返回的值是相反。)

//示例1:

_.filter([1,2],x => x = 1)

// => [1]

_.reject([1,2],x => x=1)

// => [2]

这两个过滤器,第二个参数值是false的时候返回是reject的功能,相反是true的时候是filter。

//示例2:

var users = [

{ 'user': 'barney', 'age': 36, 'active': true },

{ 'user': 'fred', 'age': 40, 'active': false }

];

_.filter(users, function(o) { return !o.active; });

// => {user: "fred", age: 36, active: true}

// The `_.matchesProperty` iteratee shorthand.

_.filter(users, ['active', false]);

// => {user: "fred", age: 36, active: true}

4.map和forEach,数组遍历。(相似)

map的回调函数中是支持return返回值的。不过二者都不改变原来的数组。

_.map([1,2],x => x+1)

// => [2,3]

推荐使用map

5.merge,参数合并。(区别于assign:assign 函数不会处理原型链上的属性,也不会合并相同的属性,而是用后面的属性值覆盖前面的属性值

merge 遇到相同属性名的时候,如果属性值是纯对象或集合的时候,会合并属性值)

const aa = _.assign({},{a:1},{a:2},{b:3})

//{a:2,b:3}

const bb = _.merge({},{a:1},{a:2},{b:3})

//{a:2,b:3}

const a1 = _.assign({},{a:1},{b:{a:1,b:2}},{b:{a:3}})

//{a:1,b:{a:3}}

const a2 = _.merge({},{a:1},{b:{a:1,b:2}},{b:{a:3}})

//{a:1,b:{a:3,b:2}}

6.sumby,sortby,orderBy,数组对象求和、排序(区别:sortby升序排序,orderBy指定为"desc" 降序,或者指定为 "asc" 升序,默认升序)

var arrs = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];

_.sumBy(arrs, k => k.n) //20

_.sumBy(arrs,'n') //20

var users = [

{ 'user': 'barney', 'age': 36 },

{ 'user': 'fred', 'age': 40 },

{ 'user': 'pebbles', 'age': 1 }

];

_.sortBy(users,'age')

_.orderBy(users, ['user', 'age'], ['desc', 'desc']);

7.cancat数组连接,uniq数组去重,union合并两个数组去重

var array = [1];

var other = _.concat(array, 2, [3], [[4]]);

console.log(other);

// => [1, 2, 3, [4]]

console.log(array);

// => [1]

可以接受多个参数,将多个参数合并为一个数组元素。

_.uniq([1,1,3])

// => [1,3]

这跟介绍的第二个函数compact有很好的配合作用。

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

8.keys ,取出对象中所有的key值组成新的数组。

function Foo() {

this.a = 1;

this.b = 2;

}

Foo.prototype.c = 3;

_.keys(new Foo);

// => ['a', 'b'] (iteration order is not guaranteed)

_.keys('hi');

// => ['0', '1']

类似object.keys(),返回对象中可枚举属性的数组。

其他:

_.drop //去除array前面的n个元素,n默认是1_.range(10)

//生成元素为0到9的数组

_.times(10, (i)=>console.log(i))

//循环10次

_.uniqueId()

//生成不同的id,用于元素中的id值再好不过

_.startWith

//判断字符串是否以xx开头(es6中为startsWith)

_.endWith

//判断字符串是否以xx结尾(es6中为endsWith)

_.truncat

//截取指定长度后加… 用于处理标题过长再好不过

_.template

//es6有字符串模板的语法,而lodash是es5的替代方案

_.assign

//下一个对象的属性会覆盖上一个对象的属性,es6有Object.assign,类似于jQuery.extend

_.assignIn

//lodash里很多方法带In的都是可枚举原型链上的属性

_.defaults

//安全合并,即忽略undefined/null的重写

_.findKey

//根据value的属性值找key

.mapKeys

//遍历重写key, 相当于.forIn

.mapValues

//遍历重写value , 相当于.forIn

_.invert

//反转映射,快速通过value值找key

_.omit

//返回移除部分属性的副本,比如提交表单时有些字段不要提交

_.pick

//与omit相反,提取部分属性的副本,比如只提交某些字段

_. clamp

//确认所给值只在min,max之间

_.max

//最大

_.min

//最小

_.sum

//求和

_.random

//生成随机数

_.round

//四舍五入,允许指定精确位数

_.isNumber

_.isInterger

_.isFunction

_.isPlainObject

_.isArray

_.isDate

_.isElement

_.isNil

//null or undefined

_.isEmpty

//{} or 空数组

_.isEqual

//支持对象和数组

_.isMatch

//匹配对象属性值

_.cloneDeep

//深度复制

_.clone

//浅复制

_.once

//只执行一次

_.before

//最多n-1次

_.after

//n次后执行

_.debounce

//忽略频繁执行

_.union

//合并两数组,去重

_.uniq

//去重

_.pull(array,element1,element2)

// 直接在array中移除元素,

_.without(array,element1,element2)

//得到新array中移除元素

_.remove(array, function)

//直接在array移除在function返回true的元素

_.sameple(array)

//随机取1

_.samepleSize(array, int)

// 随机取n

_.shuffle(array)

//乱序, jQuery.shuffle

_.find(array, function | object)

//根据function返回值和对象查找1个结果

_.filter(array, function | object)

//根据function返回值和对象查找多个结果

_.groupBy(array, string)

//分组,与多合一相反

_.keyBy(array, string)

//分组,类似groupBy, 但只有唯一值

_.countBy(array, string)

//分组统计

_.orderBy(array, array, array)

_.sortBy(array, array)

_.difference(array1,array2)

//找不同于array2,元素是Object用differenceBy

_.xor(array1,array2)

//得到非交集,元素是Object用xorBy

_.intersection(array1,array2)

//得到交集,元素是Object用intersectionBy

相关数据

油炸香酥豆萁

油炸香酥豆萁

3张图片 食材明细 主料 面粉 250克 辅料 糖 60克 盐 5克 鸡蛋 1个 牛奶 70毫升 甜味 口味 炸 工艺 一小时 耗时 普通 难度 油炸香酥豆萁的做法步骤 1

11-18 365bet现场走地盘
握力器練哪裡?全面解析握力訓練的肌肉群與方法!

握力器練哪裡?全面解析握力訓練的肌肉群與方法!

握力訓練不僅僅是鍛鍊手掌和手指的力量,更重要的是強化前臂的肌肉群,像是肱橈肌、伸指肌和橈側伸腕長肌等,這些肌肉在抓握動作中扮演

11-09 365bet赌城
新版有哪些不同?任天堂Switch 2港版原装充电底座拆解

新版有哪些不同?任天堂Switch 2港版原装充电底座拆解

另一侧印有产品使用场景等。 打开包装盒,Switch 2主机等采用纸托固定保护。 包装内含Switch 2主机、Joy-Con套件、底座、充电器套装、HDMI线等。

02-09 365bet赌城
巫师3怎么显示帧数

巫师3怎么显示帧数

XML地图 | 网站地图 Copyright 2005-2020 www.kxting.com 版权所有 | 湘ICP备2023022655号 声明: 本站所有内容均只可用于学习参考,信息与图片素材来源于互

07-26 365bet赌城
广州日报

广州日报

挖蛏子 蛏子壳薄肉厚,甘甜肥厚。 铁板盐焗蛏 蒜蓉蒸蛏能保留原味的鲜。 蛏子新鲜,吃法可别出心裁。 每年盛夏时,当海水温度升高,经历

07-16 365bet赌城
Clash订阅号使用教程与常见问题解答

Clash订阅号使用教程与常见问题解答

什么是Clash订阅号? Clash订阅号是一款网络代理工具,能够帮助用户实现科学上网,访问国外网站等功能。通过Clash订阅号,用户可以获取各种订

07-29 best365中国官网