非常好用的lodash的使用

257 阅读2分钟
  1. 安装lodash

npm i --save lodash
  1. 引入

import _ from 'lodash'
  1. 使用

下面介绍几个常用的lodash

1.防抖 debounce
2.节流 throttle

   <template>
      <div class="loadsh">
        <h1>防抖</h1>
        <el-button type="success" plain @click="reduction">我是防抖</el-button>
        <h1>节流</h1>
        <el-input v-model="input" style="width:300px" @input="throttling"></el-input>
      </div>
    </template>
<script>
import _ from 'lodash'
export default {
    data() {
        return {
            input:'',
            num:Math.random()
        }
    },
    methods: {
        //这里以一个点需要注意,在我们写的过程中不能写箭头函数因为那样获取不到this指向
        //错误//reduction:_.debounce(()=>{ console.log('我是loadsh的防抖',this.num); },1000),
        //防抖
        reduction:_.debounce(function(){
            console.log('我是loadsh的防抖',this.num);
        },1000),
       //节流
        throttling:_.throttle(function(){
            console.log('我是loadsh的节流',this.num);
        },1000)
    
}
</script>

3.数组扁平化 flattenDeep

        let arr=[1,[12,[true,5,[6,null,4,[undefined]]]]]
        let newArr=_.flattenDeep(arr)
        console.log(newArr);

4.数组深拷贝 cloneDeep

    let obj={
            name: 'zhangsan',
            date: new Date(),
            regExp: new RegExp("\w+"),
            fun: function () { return true;},
            err: new Error('error'),
            symbol: Symbol(233),
            undefined: undefined,
            null: null,
            nan: NaN,
            infinity: Infinity 
        }
        //JSON.parse(JSON.stringify())这样写会有缺陷有的数据他会拷贝不上
        let cloneObj=JSON.parse(JSON.stringify(obj))
        let cloneObjDeep=_.cloneDeep(obj)
        console.log(cloneObj);
        console.log(cloneObjDeep);

5.数组拆分 chunk

        console.log(_.chunk(["a", "b", "c", "d"], 2)); //['a','b'] ['c','d']
        console.log(_.chunk(["a", "b", "c", "d"], 3)); //["a", "b", "c"] ['d']

6.数组合并 concat

        let arr1=[1,2,3]
        let arr2=['a','b','c','e']
        let str='我不是数组'
        console.log(_.concat(arr1,arr2));//[1, 2, 3, "a", "b", "c", "e"]
        console.log(_.concat(arr1,arr2,str));// [1, 2, 3, "a", "b", "c", "e", "我不是数组"]

7.数组去假 compact
创建一个新数组,包含原数组中所有的非假值元素。例如false, null,0, "", undefined, 和 NaN 都是被认为是“假值”。

        console.log(_.compact([0,1,false,2,undefined,3,NaN,4,'']));//[1, 2, 3, 4]

8.数组切片 drop

        let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
        console.log(_.drop(arr)); // [2, 3, 4, 5, 6, 7, 8, 9]
        console.log(_.drop(arr, 3)); // [4, 5, 6, 7, 8, 9]
        console.log(_.drop(arr, 10)); //[]

9.数组排除 difference
创建一个新数组,这个数组中的值,为第一个数字(array 参数)排除了给定数组中的值。

        let arr1 = [1, 2, 3, 4, 5, 6];
        let arr2 = [5, 6];
        console.log(_.difference(arr1, arr2)); //[1, 2, 3, 4]

10.循环执行 times

         _.times(5,function(){
            console.log("我是lodash重复执行了5次");
        })

11.对象去重 assign

        let obj1={name:'小李',car:'Benz'}
        let obj2={name:'小刘',age:18}
        let obj3={name:'小王',sex:'男'}
        
        console.log(_.assign(obj1,obj2,obj3));
        //{name: "小王", car: "Benz", age: 18, sex: "男"}

12.ID uniqueId

        _.times(10,()=>{
            console.log(_.uniqueId());
        })

13.数组合并去重 union

        let arr=[1,2,3,6]
        let arr1=[1,2,3,5]
        console.log(_.union(arr,arr1));//[1, 2, 3, 6, 5]

14.数组去重 uniq

    let arr3=[1,2,3,4,4,4,6,7,8,9,9]
    console.log(_.uniq(arr3));// [1, 2, 3, 4, 6, 7, 8, 9]

15.生成数组 range

console.log(_.range(10));//[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]