• Lodash初识


    Lodash是一个一致性,模块化,高性能的JavaScript实用工具库。

    Lodash遵循MIT开源协议发布,并且支持最新的运行环境。查看各个构件版本

    的区别并选择一个适合你的版本。

    一.安装

    浏览器环境:

    通过npm

    1. npm i -g npm
    2. npm i --save lodash
    1. // Load the full build.
    2. var _ = require('lodash');
    3. // Load the core build.
    4. var _ = require('lodash/core');
    5. // Load the FP build for immutable auto-curried iteratee-first data-last methods.
    6. var fp = require('lodash/fp');
    7. // Load method categories.
    8. var array = require('lodash/array');
    9. var object = require('lodash/fp/object');
    10. // Cherry-pick methods for smaller browserify/rollup/webpack bundles.
    11. var at = require('lodash/at');
    12. var curryN = require('lodash/fp/curryN')

    二.为什么选择Lodash

    Lodash通过降低array,number,objects,string等等的使用难度从而让JavaScript变得更简单。Lodash的模块化方法非常适用于:

    (1)遍历array,object和string

    (2)对值进行操作和检测

    (3) 创建符合功能的函数

    三.数组api的使用

    (1)chunk

    作用:将一个数组拆分变成二维数组 

    代码:

    1. _.chunk(['a', 'b', 'c', 'd'], 2);
    2. // => [['a', 'b'], ['c', 'd']]
    3. _.chunk(['a', 'b', 'c', 'd'], 3);
    4. // => [['a', 'b', 'c'], ['d']]

    返回的结果:

    (2)compact

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

    代码:

    1. var _ = require('lodash');
    2. let a1=_.compact([0, 1, false, 2, '', 3]);
    3. console.log(a1);

    (3)concat

    作用:

    创建一个新数组,将array与任何数组或值连接在一起。

    代码:

    1. var _ = require('lodash');
    2. var array = [1];
    3. var other = _.concat(array, 2, [3], [[4]]);
    4. console.log(other);
    5. // => [1, 2, 3, [4]]
    6. // => [1]

    (4)drop

    创建一个切片数组,去除array前面的n个元素。(n默认值为1。)

    参数

    1. array (Array): 要查询的数组。
    2. [n=1] (number): 要去除的元素个数。

    例子:

    1. var _ = require('lodash');
    2. let a1=_.drop([1, 2, 3]);
    3. // => [2, 3]
    4. console.log(a1);

    四.实现一个深拷贝

    1. var objects = [{ 'a': 1 }, { 'b': 2 }];
    2. var deep = _.cloneDeep(objects);
    3. console.log(deep[0] === objects[0]);
    4. // => false

    五.sample

    返回一个随机元素

    1. var _ = require('lodash');
    2. let a1=_.sample([1, 2, 3, 4]);
    3. console.log(a1);

    六.merge

    代码:

    1. var object = {
    2. 'a': [{ 'b': 2 }, { 'd': 4 }]
    3. };
    4. var other = {
    5. 'a': [{ 'c': 3 }, { 'e': 5 }]
    6. };
    7. _.merge(object, other);
    8. // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }

    七.利用Lodash处理防抖和节流

    防抖:

    持续触发不执行,一段时间不触发后在去执行

    自己手写代码:

    1. DOCTYPE html>
    2. Document

    为什么要这样写,为了延长的回调,通过return出去一个函数来执行函数的一个回调为了不立即让它立马去执行。

    第二个 

    let timer 要定义在外面

    写在里面收到块级作用域的影响。

    通过lodash来实现。

    鲁大师的实现:

    下载:

    npm  i --save  lodash
    1. <script>
    2. import debounce from 'lodash.debounce'
    3. export default {
    4. name: '',
    5. methods: {
    6. textChange:debounce(function() {
    7. console.log(123);
    8. }, 1000)
    9. }
    10. }
    11. script>
    12. <style scoped>
    13. style>

    全部引入的使用;

    下载:

    npm  i --save  lodash

    在main.js中进入导入并挂载;

    1. // 导入lodash
    2. import _ from 'lodash'
    3. Vue.prototype._ = _

    实现的代码:

    1. <script>
    2. export default {
    3. name: '',
    4. methods: {
    5. fn(){
    6. console.log(this._.debounce);
    7. this._.debounce(function(){
    8. console.log(123);
    9. },1000)
    10. }
    11. }
    12. }
    13. script>
    14. <style scoped>
    15. style>

    可以看出全局挂载的方式是没有结果的,不推荐使用。

    节流:

    持续触发执行,但是触发的频率会进行减少

    下载:

    npm  i --save  lodash

    使用:

    1. <script>
    2. import {throttle} from 'lodash'
    3. export default {
    4. name: '',
    5. methods: {
    6. textChange:throttle(function() {
    7. console.log(123);
    8. }, 1000)
    9. }
    10. }
    11. script>
    12. <style scoped>
    13. style>

  • 相关阅读:
    创建环境时提示:ERROR conda.core.link:_execute(502)
    docker swarm 更改绑定ip
    yunion.cn k8s集群高可用部署
    P2802 回家
    覆盖率分析汇总
    服务器SSH 免密码登录
    Django 4.0.6源码分析:自动重启机制
    JavaSE 第八章 Java常用类
    Centos7安装mysql和composer
    论文浅尝 | QA-GNN:结合语言模型与知识图谱进行问答推理
  • 原文地址:https://blog.csdn.net/qq_59076775/article/details/126311754