lodash-实用库及常用方法

ops/2025/1/11 19:24:12/

chunk():将数组(array)拆分成多个指定长度的区块,并将这些区块组成一个新数组。例如:

javascript">let array = [1, 2, 3, 4, 5, 6];
let chunked = _.chunk(array, 2); 
// [[1, 2], [3, 4], [5, 6]]

debounce():在执行回调函数之前,延迟执行该函数。常用于处理重复的实时事件,防止回调函数的频繁触发。

javascript">function savePreferences() {  // code to save preferences
}
let save = _.debounce(savePreferences, 1000);
// Set the preference and debounced function is called after 1 second with the preference value.save('my preference');

isObject():判断某个值是否为对象。

javascript">let isObject = _.isObject({}); // true
let isNotObject = _.isObject('string'); // false

isNaN():判断某个值是否为NaN。
isNaN函数用于检查一个值是否为“非数字”值。这意味着它可以用来检测一个值是否是NaN(Not a Number),或者是一个可以被解释为有效数字的其他非数字值。

javascript">const _ = require('lodash');console.log(_.isNaN(NaN));               // 输出: true
console.log(_.isNaN(0));                  // 输出: false
console.log(_.isNaN(''));                 // 输出: false
console.log(_.isNaN('123'));               // 输出: false
console.log(_.isNaN([1, 2, 3]));           // 输出: false
console.log(_.isNaN({ a: 1, b: 2 }));      // 输出: false
console.log(_.isNaN(null));               // 输出: false
console.log(_.isNaN(undefined));          // 输出: false

isUndefined():判断某个值是否为undefined。

javascript">const _ = require('lodash');let value1, value2, value3;console.log(_.isUndefined(value1));  *// 输出: true*
console.log(_.isUndefined(value2));  *// 输出: false*
console.log(_.isUndefined(value3));  *// 输出: true*

map():创建一个新数组,数组中的元素是通过调用提供的函数在原始数组上产生的结果。

javascript">let array = [1, 2, 3];
let doubled = _.map(array, function(num) { return num * 2; }); 
// [2, 4, 6]

get():获取对象指定属性的值。

它允许你通过指定的路径获取对象的属性。如果路径不存在,则返回undefined

javascript">const _ = require('lodash');let object = {a: {b: {c: 3}}
};console.log(_.get(object, 'a.b.c')); // 输出 3
console.log(_.get(object, 'a.b.d')); // 输出 undefined
console.log(_.get(object, 'a.e')); // 输出 undefined

set():设置对象指定属性的值。

set函数是用于在对象中设置指定路径的属性值。如果路径不存在,则会自动创建。

javascript">const _ = require('lodash');let object = {a: {b: {c: 3}}
};_.set(object, 'a.b.c', 4); // 设置路径'a.b.c'的属性值为4
console.log(object); // 输出 { a: { b: { c: 4 } } }_.set(object, 'a.b.d', 5); // 设置路径'a.b.d'的属性值为5,如果不存在会创建路径
console.log(object); // 输出 { a: { b: { c: 4, d: 5 } } }

isEqual():深度比较两个对象是否相等。

isEqual函数用于比较两个对象或值是否相等。它使用严格比较(deep comparison)来检查对象和数组中的值,并且会处理循环引用。

javascript">const _ = require('lodash');let object1 = { a: 1, b: { c: 2 } };
let object2 = { a: 1, b: { c: 2 } };
let object3 = { a: 1, b: { c: 3 } };console.log(_.isEqual(object1, object2));  // 输出: true
console.log(_.isEqual(object1, object3));  // 输出: false

isEmpty():判断一个对象是否为空。

isEmpty函数用于检查一个对象(数组、字符串、对象等)是否为空。

javascript">const _ = require('lodash');let array1 = [];
let array2 = [1, 2, 3];
let object1 = {};
let object2 = { a: 1, b: 2 };
let string1 = '';
let string2 = 'abc';console.log(_.isEmpty(array1));      // 输出: true
console.log(_.isEmpty(array2));      // 输出: false
console.log(_.isEmpty(object1));     // 输出: true
console.log(_.isEmpty(object2));     // 输出: false
console.log(_.isEmpty(string1));     // 输出: true
console.log(_.isEmpty(string2));     // 输出: false

sortBy(): 方法可以按照指定的条件对数组进行排序。

javascript">let people = [ { 'name': 'John', 'age': 30 }, { 'name': 'Jane', 'age': 25 }, { 'name': 'Mike', 'age': 35 }
];
let sortedPeople = _.sortBy(people, ['age', 'name']);
console.log(sortedPeople);
// [{ name: 'Jane', age: 25 }, { name: 'John', age: 30 }, { name: 'Mike', age: 35 }]

在上面的例子中,我们首先定义了一个people数组,然后使用sortBy方法按照age和name进行排序。sortBy方法接受两个参数,第一个参数是需要排序的数组,第二个参数是一个字符串或数组,用于指定排序的条件。如果第二个参数是字符串,则按照该字符串代表的属性进行排序;如果第二个参数是数组,则先按照第一个元素指定的属性进行排序,然后按照第二个元素指定的属性进行排序。

需要注意的是,sortBy方法默认按照升序排序,如果需要按照降序排序,可以传入第三个参数为true。

union()函数用于合并多个数组,并去除重复项

javascript">// 导入lodash库
const _ = require('lodash');// 创建数组
const array1 = [1, 2, 3];
const array2 = [3, 4, 5];
const array3 = [5, 6, 7];// 使用union函数合并数组并去除重复项
const result = _.union(array1, array2, array3);// 输出结果
console.log(result); // [1, 2, 3, 4, 5, 6, 7]

intersection()函数用于获取数组的交集

javascript">// 导入lodash库
const _ = require('lodash');// 创建数组
const array1 = [1, 2, 3];
const array2 = [3, 4, 5];
const array3 = [5, 6, 7];// 使用intersection函数获取数组的交集
const result = _.intersection(array1, array2, array3);// 输出结果
console.log(result); // [3]

difference()函数用于从第一个数组中移除所有在其他数组中的元素

javascript">// 导入lodash库
const _ = require('lodash');// 创建数组
const array1 = [1, 2, 3, 4, 5];
const array2 = [3, 4];
const array3 = [4, 5];// 使用difference函数从array1中移除所有在array2和array3中的元素
const result = _.difference(array1, array2, array3);// 输出结果
console.log(result); // [1]

pluck()从对象中获取给定键的值

javascript">const people = [{'name': 'Bob', 'age': 36}, {'name': 'Alice', 'age': 30}];
const names = _.pluck(people, 'name'); // ['Bob', 'Alice']

invoke()这个函数用于调用对象中的方法。这对于处理包含方法的对象非常有用。

javascript">const person = {name: 'John',age: 30,greet: function() {console.log('Hello!');}
};
_.invoke(person, 'greet'); // "Hello!"

assign()这个函数用于将对象的属性复制到另一个对象。这是一个非常有用的函数,用于合并对象。

javascript">const obj1 = { a: 1 };
const obj2 = { b: 2 };
const merged = _.assign({}, obj1, obj2); // { a: 1, b: 2 }

cloneDeep()这个函数用于深度克隆一个对象。这对于处理复杂对象和避免引用问题非常有用

javascript">const obj = { a: 1, b: { c: 2 } };
const cloned = _.cloneDeep(obj); // { a: 1, b: { c: 2 } }

http://www.ppmy.cn/ops/149224.html

相关文章

学前端 4 个月想进中厂,该怎么做?

大家好,我是程序员鱼皮。收到一位编程导航鱼友的提问,想要自学前端 4 个月进入中厂工作,让我帮忙给出一份学习计划。 鱼友提问 我刚刚考完研和准备期末考试,大三基本上在备研所以没有专门学习一项技术栈,简单学习过 …

【每日学点鸿蒙知识】调试、网络、缓存、富文本编辑等

1、如何使用发布证书进行调试? 由于部分功能需要校验证书信息,所以需要使用调试证书和发布证书分别进行调试,但是使用发布证书后出现安装错误05/14 19:04:39: Install Failed: error: failed to install bundle.code:9568322error: signatur…

飞凌嵌入式i.MX8M Mini核心板已支持Linux6.1

飞凌嵌入式FETMX8MM-C核心板现已支持Linux6.1系统,此次升级不仅使系统功能更加丰富,还通过全新BSP实现了内存性能的显著提升。 基于NXP i.MX8M Mini处理器设计开发的飞凌嵌入式FETMX8MM-C核心板,拥有4个Cortex-A53高性能核和1个Cortex-M4实时…

在 Ubuntu 上安装和配置 Redis

在 Ubuntu 上安装和配置 Redis,并使用发布-订阅(Pub/Sub)功能,可以按照以下步骤进行: 一、安装 Redis 1. 更新包列表 首先,更新本地的包列表以确保获取到最新的软件包信息: sudo apt update…

工业5G路由器 赋能车联网,让大巴车 “智” 行无忧

随着通信技术及物联网的飞速发展,5G 技术逐渐渗透到各个领域,工业 5G 路由器在智慧大巴车场景中展现出了卓越的应用价值。 实时车辆监控与管理 工业 5G 路由器凭借其高速率、低延迟的特性,让大巴车运营中心能够实时获取车辆的位置信息、行驶…

Windows上使用VSCode开发linux C++程序

在Windows上使用VSCode开发C程序,同时需要在Linux机器上的Docker容器中编译和运行程序,可以通过一些工具和插件来简化开发和调试流程。以 1. Remote - SSH 插件(VSCode) VSCode的 Remote - SSH 插件可以让你直接在VSCode中通过S…

ISO20000是什么管理体系

一、ISO20000是什么管理体系 ISO20000是信息技术管理体系, 是第1部针对信息技术服务管理领域的国ji标准,也是一套有关如何采用流程方法有效地提供服务以满足客户业务需求的方法。 作为认证组织的IT运营和服务管理水平的国ji标准,ISO20000具体…

计算机网络之---HTTP协议

HTTP 协议详解 HTTP (Hypertext Transfer Protocol),即超文本传输协议,是用于Web浏览器和Web服务器之间进行通信的基础协议。它是应用层协议,定义了客户端(如浏览器)与服务器之间如何交换数据,特别是Web页…