LoDash 中文版之 Array

             学习LoDash,发现基本都是英文网站,对于初学者十分不方便。我自己总结了一下,现与大家共享,有错误处或不妥之处,请大神给予意见。

1.

_.chunk(['a', 'b', 'c', 'd'], 2);
// → [['a', 'b'], ['c', 'd']]

_.chunk(['a', 'b', 'c', 'd'], 3);
// → [['a', 'b', 'c'], ['d']]

 按指定长度合并数组中的元素

2.

_.compact([0, 1, false, 2, '', 3]);
// → [1, 2, 3]

 删除数组元素中的 虚假值(false, null, 0, "", undefined,  NaN are falsey)

3.

_.difference([1, 2, 3], [5, 2, 10]);
// → [1, 3]

 在第一个数组元素中删除与第二个数组相同的元素

4.

_.intersection([1, 2, 3], [5, 2, 1, 4], [2, 1]);
// → [1, 2]

 找到几个数组中共有的元素,并输出。

5.

_.drop([1, 2, 3]);
// → [2, 3]

_.drop([1, 2, 3], 2);
// → [3]

_.drop([1, 2, 3], 5);
// → []

_.drop([1, 2, 3], 0);
// → [1, 2, 3]

 输出删除的指定位置元素(默认值为1),如果为0则返回原数组。

6.

_.dropRight([1, 2, 3]);
// → [1, 2]

_.dropRight([1, 2, 3], 2);
// → [1]

_.dropRight([1, 2, 3], 5);
// → []

_.dropRight([1, 2, 3], 0);
// → [1, 2, 3]

 同上 只是从右边开始。

7.

_.dropRightWhile([1, 2, 3], function(n) { return n > 1; });
// → [1]

var users = [
  { 'user': 'barney',  'status': 'busy', 'active': false },
  { 'user': 'fred',    'status': 'busy', 'active': true },
  { 'user': 'pebbles', 'status': 'away', 'active': true }
];

// using the "_.property" callback shorthand
_.pluck(_.dropRightWhile(users, 'active'), 'user');
// → ['barney']

// using the "_.matches" callback shorthand
_.pluck(_.dropRightWhile(users, { 'status': 'away' }), 'user');
// → ['barney', 'fred']

 根据条件(users, 'active'),查找'user'中不满足条件的对象。

根据(users, { 'status': 'away' }),查找'user'中不满足条件的对象。

8.

var users = [
  { 'user': 'barney',  'age': 36, 'active': false },
  { 'user': 'fred',    'age': 40, 'active': true },
  { 'user': 'pebbles', 'age': 1,  'active': false }
];

_.findIndex(users, function(chr) { return chr.age < 40; });
// → 0

// using the "_.matches" callback shorthand
_.findIndex(users, { 'age': 1 });
// → 2

// using the "_.property" callback shorthand
_.findIndex(users, 'active');
// → 1

 输出反向满足条件的对象个数

9.

var users = [
  { 'user': 'barney',  'age': 36, 'active': true },
  { 'user': 'fred',    'age': 40, 'active': false },
  { 'user': 'pebbles', 'age': 1,  'active': false }
];

_.findLastIndex(users, function(chr) { return chr.age < 40; });
// → 2

// using the "_.matches" callback shorthand
_.findLastIndex(users, { 'age': 40 });
// → 1

// using the "_.property" callback shorthand
_.findLastIndex(users, 'active');
// → 0

 满足条件的对象个数

10.

_.first([1, 2, 3]);
// → 1

_.first([]);
// → undefined
输出第一个元素                 
_.rest([1, 2, 3]);
// → [2, 3]
输出除第一个元素的剩下元素。
_.last([1, 2, 3]);
// → 3
输出最后一个元素。
_.initial([1, 2, 3]);
// → [1, 2]
输出除最后一个元素的剩下元素。 

 11.

_.flatten([1, [2], [3, [[4]]]]);
// → [1, 2, 3, [[4]]];
就是输出一下这个数组
// using `isDeep`
_.flatten([1, [2], [3, [[4]]]], true);
// → [1, 2, 3, 4];
用 isDeep  把各个递归中的元素,放在一层递归中

 12.1

_.indexOf([1, 2, 3, 1, 2, 3], 2);
// → 1

// using `fromIndex`
_.indexOf([1, 2, 3, 1, 2, 3], 2, 3);
// → 4

// performing a binary search
_.indexOf([4, 4, 5, 5, 6, 6], 5, true);
// → 2

 ,后数据首次出现的位置,计数从0开始。

12.2

_.sortedLastIndex([4, 4, 5, 5, 6, 6], 5); //
// → 4

 其出现的最后位置

13.

var array = [1, 2, 3, 1, 2, 3];
_.pull(array, 2, 3);
console.log(array);
// → [1, 1]

 原数组删除2, 3后输出

14.

var array = [5, 10, 15, 20];
var evens = _.pullAt(array, [1, 3]);

console.log(array);
// → [5, 15]

console.log(evens);
// → [10, 20]

 相对于_.pull多加个情况,但功能与其相反。

15.

var array = [1, 2, 3, 4];
var evens = _.remove(array, function(n) { return n % 2 == 0; });

console.log(array);
// → [1, 3]

console.log(evens);
// → [2, 4]

 一看便知

16.

_.sortedIndex([30, 50], 40);
// → 1

_.sortedIndex([4, 4, 5, 5, 6, 6], 5);
// → 2

var dict = { 'data': { 'thirty': 30, 'forty': 40, 'fifty': 50 } };

// using an iteratee function
_.sortedIndex(['thirty', 'fifty'], 'forty', function(word) {
  return this.data[word];
}, dict);
// → 1

// using the "_.property" callback shorthand
_.sortedIndex([{ 'x': 30 }, { 'x': 50 }], { 'x': 40 }, 'x');
// → 1

 输出其插入的位置,但会自动判断比较前后。

17.

_.takeRight([1, 2, 3], 2);
// → [2, 3]

_.takeRight([1, 2, 3], 5);
// → [1, 2, 3]

_.takeRight([1, 2, 3], 0);
// → []

 据[1, 2, 3],创建一个新的数组(,后的数字决定从开始到哪个数字结束,没有的省略,默认值为 1)。

18.

var zipped = _.zip(['fred', 'barney'], [30, 40], [true, false]);
// → [['fred', 30, true], ['barney', 40, false]]

_.unzip(zipped);
// → [['fred', 'barney'], [30, 40], [true, false]]

 从两个数组的对应位置上取出数据并存放到新的数组中(一个位置一个数组)。

其实就是_.zip。

19.

_.without([1, 2, 1, 0, 3, 1, 4], 0, 1);
// → [2, 3, 4]
去掉 0 1

_.xor([1, 2, 3], [5, 2, 1, 4]);
// → [3, 5, 4]

_.xor([1, 2, 5], [2, 3, 5], [3, 4, 5]);
// → [1, 4, 5]

 都有的留下,就一个有的留下,其余删掉,并合并。

<think> 首先,用户的问题是:“我想查找lodash库中chunk方法的使用指南 请问lodash chunk方法使用指南”。这表示用户需要lodash库中chunk方法的使用指南。 根据系统级指令: - 所有行内数学表达式必须使用$...$格式。 - 独立公式使用$$...$$。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 回答中引用的段落末尾自然地添加引用标识。 用户提供了参考站内引用,列出了引用[1]到[5],内容涉及chunk方法、Lodash的使用、以及优化等。我需要参考这些引用来构建回答,但不是直接复制,而是基于用户的问题综合信息。 关键引用: - 引用[1]:展示了chunk()示例在JavaScript with Lodash,使用const chunks = _.chunk(arr, 2)。 - 引用[2]:关于Lodash在Vue 3中的安装和引入,推荐按需引入。 - 引用[3]:讨论了从Lodash迁移到es-toolkit,提到了chunk方法的兼容性。 - 引用[4]:提到了chunk在优化中的使用,如代码分割。 - 引用[5]:Lodash-es的指南,强调按需导入。 用户的问题焦点是lodash中的chunk方法,所以我应该集中在chunk方法上。 回答结构: - 清晰的结构:介绍chunk方法、语法、示例、使用场景等。 - 使用中文。 - 结束时生成相关问题。 - 引用时自然地添加引用标识。 大纲回答: 1. **介绍chunk方法**:解释什么是chunk方法,它用于将数组分成指定大小的chunks。 2. **语法**:展示如何使用,包括安装和引入。 3. **示例代码**:提供代码示例,基于引用[1]。 4. **使用场景**:讨论何时使用,如引用[4]提到的代码分割。 5. **注意事项**:比如性能、优化,参考引用。 6. **相关问题**:生成3-5个相关问题。 引用标识: - 当提到特定内容时,如安装指南或示例,添加引用标识,例如[^1]、[^2]等。 生成相关问题: - 指令说“生成相关问题”,所以我需要在回答结束时添加类似示例中的“相关问题”部分。 完整回答: - 开头直接回答用户问题。 - 中间结构化内容。 - 结尾生成相关问题。 </think> ### Lodash `chunk()` 方法使用指南 Lodash 是一个流行的 JavaScript 实用工具库,提供高效的数组操作函数。`chunk()` 方法用于将数组划分为指定大小的子数组(chunks),这在处理大数据集、分页或优化资源加载时非常有用。下面我将基于引用内容,逐步解释如何使用 `chunk()` 方法,包括语法、示例、常见场景和最佳实践。 #### 1. `chunk()` 方法概述 `chunk()` 方法接受一个数组和一个大小参数,返回一个新数组,其中包含原数组按指定大小分割的子数组。如果原数组长度不能整除大小,最后一个子数组会包含剩余元素。这在分块处理数据时能提升性能,特别是在网络优化中[^4]。 基本语法: ```javascript _.chunk(array, size) ``` - **参数**: - `array`: 要分割的输入数组。 - `size`: 每个子数组的大小(必须为正整数)。 - **返回值**: 一个二维数组,包含分割后的子数组。 #### 2. 安装与引入 使用 `chunk()` 前,需安装 Lodash。推荐在 Vue 3 或现代项目中引入 Lodash-es(ES Modules 版本),以支持按需导入和减少打包体积[^2]: - **安装命令**: ```bash npm install lodash-es # 推荐用于 ES Modules 兼容的项目 ``` - **按需引入方式**: ```javascript import { chunk } from 'lodash-es'; // 仅导入 chunk 方法,避免全量引入 ``` #### 3. 代码示例 参考引用[1],以下是一个简单示例,展示如何将数组分割成大小为 2 的子数组: ```javascript import { chunk } from 'lodash-es'; // 引入 chunk 方法 const arr = [1, 2, 3, 4, 5]; const chunks = chunk(arr, 2); // 分割数组,每块大小为 2 console.log(chunks); // 输出: [[1, 2], [3, 4], [5]] ``` - **解释**: - 输入数组 `arr` 包含 5 个元素。 - `chunk(arr, 2)` 将其分割为 3 个子数组:前两个子数组各包含 2 个元素,最后一个子数组包含剩余 1 个元素。 - **适用场景**:分页显示、批量处理数据或代码分割以减少加载时间[^4]。 #### 4. 常见使用场景和注意事项 - **使用场景**: - **数据分页**: 在 UI 开发中,用于将长列表分割为固定大小的页块。 - **优化性能**: 结合代码分割技术,减少网络加载体积,尤其在网络环境差时提升冷启动速度[^4]。 - **迁移兼容**: 如果从 Lodash 迁移到其他工具库如 es-toolkit,`chunk` 方法通常完全兼容,无需修改逻辑[^3]。 - **注意事项**: - **参数验证**: 确保 `size` 为正整数,否则可能返回空数组或错误。 - **性能考量**: 对于超大数组,推荐结合异步处理,避免阻塞主线程。 - **替代方案**: Lodash-es 的按需导入能优化项目大小,避免不必要的依赖[^5]。 #### 5. 最佳实践 - **按需导入**: 仅导入所需方法,减小打包体积: ```javascript import { chunk } from 'lodash-es'; // 推荐方式,符合现代模块化标准[^5] ``` - **迁移指南**: 如果项目过渡到 es-toolkit,可使用兼容层确保平滑迁移[^3]: ```javascript import { chunk } from 'es-toolkit/compat'; // 兼容 Lodash 的 API ``` 通过以上指南,您可以高效使用 `chunk()` 方法优化数组操作。如果您需要更多代码示例或特定场景的解决方案,请提供详细信息。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值