记录一些lodash中一些好用的方法:
<template>
<div>lodash常用方法</div>
</template>
<script>
export default {
name: "lodash",
data() {
return {};
},
mounted() {
字符串方法:
_.startWith //判断字符串是否以xx开头
_.endWidth //判断字符串是否以xx结束
对象方法:
_.assign //合并对象,不能用于数组
_.omit(obj,'a'); //返回移出部分属性的副本
_.pick(obj,'a','c') //提取部分属性的副本,比如只提交某些字段
数组方法:
_.map(数组对象,‘key’) //将数组对象中的值依据key提取到一个数组中
_.map(myArray,item=>)
_.forEach(myArray,item=>{})
_.times(myArray.length,(item,index)=>{
console.log(item,1111)
}) //循环操作每一项
_.pull(array,element1,element2) //直接在array中移除元素
_.without(array,element1,element2) //得到新数组中移除元素
_.remove(array,function) //直接在array中移除在function返回为true的元素
同时支持对象和数组的
_.isEqual //比较是否相等 返回布尔值
_.isEmpty //空数组
cloneDeep //深度复制
clone //灵活指定克隆深度
//*****在指定范围内获取一个随机值
_.random(0,20) 获取0-20的随机数
_.random(0,20,true) 获取0-20的浮点型随机数
1. _.difference(array,[values]) 从数组中过滤元素 *注:俩个参数都是数组类型
a.剔除array中不需要的元素
console.log(_.difference(array,[1,2,3])) // 打印结果:[4,5,6,7,8,9,10]
b.比较俩个数组是否相同
console.log(_.difference(array,array)) //打印结果: []
2. _.drop(array,number)从头开始删除number个数组元素 类似slice()
console.log(_.drop(array,5)) //打印结果: [6, 7, 8, 9, 10]
_.dropRight() 从末尾开始删除number个数组元素
// 复习: slice(start,end) 截取从start(下标)到end-1位置处的数据,返回截取的数据 不改变原数组
// splice(start,length) 从start(下标)处删除 指定length长度的数,返回删除的数据 改变原数组
// splice(start,length,num1,num2)第三个参数的个数不固定 替换
// 3. _.first(array) 返回数组的第一个元素
// console.log(_.first(array),_.first(myArray))
// 9. _.last(array) 返回参数数组的末尾元素
// 4. _.findIndex(array,[predicate=_.identity],[thisAry]) 类似于indexOf()方法
// 查询元素序号,如果查询到了符合要求的第一个元素则返回序号,否则返回-1
// 5. _.findLastIndex 返回符合要求的最后一个元素的序号
// console.log(_.findIndex(myArray, {name: "xiaowang",age: 19}));
// console.log(_.findIndex(myArray, 'name'))
// 6. _.fill()数组元素替换 *注:此方法改变原数组 类似splice()
// console.log(_.fill(array,'*')) //打印结果:) ["*", "*", "*", "*", "*", "*", "*", "*", "*", "*"]
// console.log(_.fill(array,'*',1,5)) //打印结果: [1, "* ", "*", "*", "*", 6, 7, 8, 9, 10]
// 7. _.indexOf()
// console.log(_.indexOf(array,2), _.indexOf(array,2,2,2,2), _.indexOf(array,2,true))
//打印结果: 1 2 1
// _.lastIndexOf()
// console.log(array.lastIndexOf(2,2,2),"原生方法")
// console.log(_.lastIndexOf(array,2), _.lastIndexOf(array,2,2,2), _.lastIndexOf(array,2,true))
// //打印结果: 5 2 1
// 8._.pull(array,[values]) 移除值, 注:直接在原数组上进行操作
// console.log(_.pull(array,2,3)) 打印结果: [1, 4, 5, 6, 7, 8, 9, 10]
// 10.flatten(array) 减少一级array嵌套深度
// flattenDeep(array) 将array抹平为一维数组
// flattenDepth(array,[depth=1]) 根据depth减少嵌套层数
// let arr = [1,[2,3,[4,5,6]]]
// console.log(_.flattenDeep([1, [2, 3, [4]]], true))
// console.log(_.flatten(arr), _.flatten(arr,true))
// 11 _.uniq 去除集合中的重复部分
// 12 _.filter
}
};
</script>
附:es6 常用数组的方法:
核心方法:
splice(start,length) 表示删除从start(下标)位置处,删除length长度的数据,返回被删除的数据
splice(start) 表示到末尾全部删除,返回被删除的数据
splice(start,length,'替换的内容')
slice(start,end) 表示截取从start(下标)到end-1位置处的数据,返回截取的数据,不改变原数组
slice(start) 表示到末尾全部截取,返回截取的数据
slice 没有第三个参数
join(字符) 将数组中的数据通过某个字符连接起来,返回一个字符串 无参数默认逗号分隔
reverse() 翻转数组中元素顺序
flat(Infinity) 将多维数组转为一维数组
includes() 判断arr是否包含一个指定的值,返回true false
遍历方法:
map filter find reduce
1.判断是否是数组的方法:
Array.isArray() 判断括号内是否是数组 //不支持ie8以下
兼容ie8以下的方法:
if(!Array.isArray){
Array.isArray = function(arg){
return Object.prototype.toString.call(arg) === '[object Array]'
}
}
instanceOf 用来检测构造函数的prototype属性是否出现在某个实例对象的原型链上
检测数组: arr instanceOf Array
缺点:1.构造函数的prototype和实例的原型链都有可能会改变,
2.在iframe的页面脚本中使用instanceOf,可能会得到错误结果、
iframe具有独立的全局环境,不同的全局环境拥有不同的全局对象,从而拥有不同的内置类型构造函数
constructor 每个实例都有构造函数,用于保存创建当前对象的函数
arr.constructor === Array //缺点有被修改的风险,导致判断不一定准确
2.for in 和for of 区别
for in 遍历key 更适合遍历对象,遍历数组得到的是数组的下标
for of 遍历value 可以遍历数组,得到的是数组的元素
不能遍历对象
3.Set集合 和 Map集合
数组去重: ...new Set([arr])
Map set() 赋值
get() 根据键获取值
delete() 删除数据
has() 判断是否含有某个键
clear() 清空
例:new Map(['key1','value1'],['key2','value2'])
版权声明:本文为sincejuly1995原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。