ly-utils-lib 2.8.0 → 2.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +39 -15
- package/dist/array.cjs +8 -0
- package/dist/array.cjs.map +1 -1
- package/dist/array.d.cts +2 -2
- package/dist/array.d.ts +2 -2
- package/dist/array.js +1 -1
- package/dist/array.js.map +1 -1
- package/dist/{index-BoqNpwNa.d.cts → index-BexwNzGt.d.cts} +4 -2
- package/dist/{index-BoqNpwNa.d.ts → index-BexwNzGt.d.ts} +4 -2
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/package.json +11 -1
package/README.md
CHANGED
|
@@ -168,6 +168,8 @@ import {
|
|
|
168
168
|
average,
|
|
169
169
|
maxValue,
|
|
170
170
|
minValue,
|
|
171
|
+
forEachAsync,
|
|
172
|
+
forEachRight,
|
|
171
173
|
} from 'ly-utils-lib/array'
|
|
172
174
|
|
|
173
175
|
// 数组去重
|
|
@@ -209,25 +211,47 @@ const sum = reduceSum(nums) // 15
|
|
|
209
211
|
const avg = average(nums) // 3
|
|
210
212
|
const max = maxValue(nums) // 5
|
|
211
213
|
const min = minValue(nums) // 1
|
|
214
|
+
|
|
215
|
+
// 异步遍历
|
|
216
|
+
const users = [{ id: 1 }, { id: 2 }, { id: 3 }]
|
|
217
|
+
await forEachAsync(users, async (user) => {
|
|
218
|
+
await updateUser(user.id)
|
|
219
|
+
})
|
|
220
|
+
|
|
221
|
+
// 异步遍历(带并发限制)
|
|
222
|
+
await forEachAsync(
|
|
223
|
+
items,
|
|
224
|
+
async (item) => await processItem(item),
|
|
225
|
+
{ concurrency: 2 }
|
|
226
|
+
)
|
|
227
|
+
|
|
228
|
+
// 从右到左遍历
|
|
229
|
+
const result: number[] = []
|
|
230
|
+
forEachRight([1, 2, 3], (value) => {
|
|
231
|
+
result.push(value)
|
|
232
|
+
})
|
|
233
|
+
console.log(result) // [3, 2, 1]
|
|
212
234
|
```
|
|
213
235
|
|
|
214
236
|
**API 列表:**
|
|
215
237
|
|
|
216
|
-
| 函数 | 说明
|
|
217
|
-
| -------------------------------- |
|
|
218
|
-
| `unique(arr, key?)` | 数组去重
|
|
219
|
-
| `shuffle(arr)` | 数组乱序
|
|
220
|
-
| `chunk(arr, size)` | 数组分块
|
|
221
|
-
| `groupBy(arr, fn)` | 数组分组
|
|
222
|
-
| `arrayToTree(arr, options)` | 数组转树
|
|
223
|
-
| `treeToArray(tree, childrenKey)` | 树转数组
|
|
224
|
-
| `paginate(arr, page, pageSize)` | 分页
|
|
225
|
-
| `reduceSum(arr, mapper)` | 求和
|
|
226
|
-
| `average(arr, mapper)` | 平均值
|
|
227
|
-
| `maxValue(arr, mapper)` | 最大值
|
|
228
|
-
| `minValue(arr, mapper)` | 最小值
|
|
229
|
-
| `move(arr, from, to)` | 移动元素
|
|
230
|
-
| `split(arr, size)` | 分割数组
|
|
238
|
+
| 函数 | 说明 | 示例 |
|
|
239
|
+
| -------------------------------- | ------------------ | --------------------------------- |
|
|
240
|
+
| `unique(arr, key?)` | 数组去重 | `unique([1, 2, 2, 3])` |
|
|
241
|
+
| `shuffle(arr)` | 数组乱序 | `shuffle([1, 2, 3])` |
|
|
242
|
+
| `chunk(arr, size)` | 数组分块 | `chunk([1, 2, 3, 4], 2)` |
|
|
243
|
+
| `groupBy(arr, fn)` | 数组分组 | `groupBy(arr, x => x.type)` |
|
|
244
|
+
| `arrayToTree(arr, options)` | 数组转树 | `arrayToTree(data)` |
|
|
245
|
+
| `treeToArray(tree, childrenKey)` | 树转数组 | `treeToArray(tree)` |
|
|
246
|
+
| `paginate(arr, page, pageSize)` | 分页 | `paginate(arr, 1, 10)` |
|
|
247
|
+
| `reduceSum(arr, mapper)` | 求和 | `reduceSum([1, 2, 3])` |
|
|
248
|
+
| `average(arr, mapper)` | 平均值 | `average([1, 2, 3])` |
|
|
249
|
+
| `maxValue(arr, mapper)` | 最大值 | `maxValue([1, 2, 3])` |
|
|
250
|
+
| `minValue(arr, mapper)` | 最小值 | `minValue([1, 2, 3])` |
|
|
251
|
+
| `move(arr, from, to)` | 移动元素 | `move([1, 2, 3], 0, 2)` |
|
|
252
|
+
| `split(arr, size)` | 分割数组 | `split([1, 2, 3, 4], 2)` |
|
|
253
|
+
| `forEachAsync(arr, fn, options?)` | 异步遍历数组(支持并发控制) | `await forEachAsync(arr, async fn, { concurrency: 2 })` |
|
|
254
|
+
| `forEachRight(arr, fn)` | 从右到左遍历数组 | `forEachRight([1, 2, 3], fn)` |
|
|
231
255
|
|
|
232
256
|
### 📝 String Module - 字符串处理
|
|
233
257
|
|
package/dist/array.cjs
CHANGED
|
@@ -166,6 +166,14 @@ Object.defineProperty(exports, "flattenDeep", {
|
|
|
166
166
|
enumerable: true,
|
|
167
167
|
get: function () { return esToolkit.flattenDeep; }
|
|
168
168
|
});
|
|
169
|
+
Object.defineProperty(exports, "forEachAsync", {
|
|
170
|
+
enumerable: true,
|
|
171
|
+
get: function () { return esToolkit.forEachAsync; }
|
|
172
|
+
});
|
|
173
|
+
Object.defineProperty(exports, "forEachRight", {
|
|
174
|
+
enumerable: true,
|
|
175
|
+
get: function () { return esToolkit.forEachRight; }
|
|
176
|
+
});
|
|
169
177
|
Object.defineProperty(exports, "groupBy", {
|
|
170
178
|
enumerable: true,
|
|
171
179
|
get: function () { return esToolkit.groupBy; }
|
package/dist/array.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/modules/array/index.ts"],"names":["uniqBy","uniq","sum","map"],"mappings":";;;;;AAiDO,IAAM,MAAA,GAAS,CAAI,GAAA,EAAU,GAAA,KAAuB;AACzD,EAAA,IAAI,GAAA,EAAK;AACP,IAAA,OAAOA,gBAAA,CAAO,GAAA,EAAK,CAAA,IAAA,KAAQ,IAAA,CAAK,GAAG,CAAQ,CAAA;AAAA,EAC7C;AACA,EAAA,OAAOC,eAAK,GAAG,CAAA;AACjB;AAMO,IAAM,GAAA,GAAM,CAAC,GAAA,KAAsC;AACxD,EAAA,IAAI,GAAA,CAAI,MAAA,KAAW,CAAA,EAAG,OAAO,MAAA;AAC7B,EAAA,OAAO,IAAA,CAAK,GAAA,CAAI,GAAG,GAAG,CAAA;AACxB;AAMO,IAAM,GAAA,GAAM,CAAC,GAAA,KAAsC;AACxD,EAAA,IAAI,GAAA,CAAI,MAAA,KAAW,CAAA,EAAG,OAAO,MAAA;AAC7B,EAAA,OAAO,IAAA,CAAK,GAAA,CAAI,GAAG,GAAG,CAAA;AACxB;AAMO,IAAM,OAAA,GAAU,CAAI,GAAA,KAAsB;AAC/C,EAAA,OAAO,IAAI,MAAA,KAAW,CAAA;AACxB;AAOO,IAAM,KAAA,GAAQ,CAAI,GAAA,EAAU,IAAA,KAAwB;AACzD,EAAA,MAAM,SAAgB,EAAC;AACvB,EAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,GAAA,CAAI,MAAA,EAAQ,KAAK,IAAA,EAAM;AACzC,IAAA,MAAA,CAAO,KAAK,GAAA,CAAI,KAAA,CAAM,CAAA,EAAG,CAAA,GAAI,IAAI,CAAC,CAAA;AAAA,EACpC;AACA,EAAA,OAAO,MAAA;AACT;AAMO,IAAM,OAAA,GAAU,CAAI,GAAA,KAAkB;AAC3C,EAAA,MAAM,MAAA,GAAS,CAAC,GAAG,GAAG,CAAA;AACtB,EAAA,KAAA,IAAS,IAAI,MAAA,CAAO,MAAA,GAAS,CAAA,EAAG,CAAA,GAAI,GAAG,CAAA,EAAA,EAAK;AAC1C,IAAA,MAAM,IAAI,IAAA,CAAK,KAAA,CAAM,KAAK,MAAA,EAAO,IAAK,IAAI,CAAA,CAAE,CAAA;AAC3C,IAAA,CAAC,MAAA,CAAO,CAAC,CAAA,EAAG,MAAA,CAAO,CAAC,CAAC,CAAA,GAAI,CAAC,MAAA,CAAO,CAAC,CAAA,EAAG,MAAA,CAAO,CAAC,CAAC,CAAA;AAAA,EACjD;AACA,EAAA,OAAO,MAAA;AACT;AAOO,IAAM,SAAA,GAAY,CAAI,GAAA,EAAU,SAAA,KAA2D;AAChG,EAAA,OAAO,GAAA,CAAI,UAAU,SAAS,CAAA;AAChC;AAOO,IAAM,IAAA,GAAO,CAClB,GAAA,EACA,SAAA,KACkB;AAClB,EAAA,OAAO,GAAA,CAAI,KAAK,SAAS,CAAA;AAC3B;AAOO,IAAM,MAAA,GAAS,CAAI,GAAA,EAAU,SAAA,KAAwD;AAC1F,EAAA,OAAO,GAAA,CAAI,OAAO,SAAS,CAAA;AAC7B;AAOO,IAAM,GAAA,GAAM,CAAO,GAAA,EAAU,MAAA,KAA+C;AACjF,EAAA,OAAO,GAAA,CAAI,IAAI,MAAM,CAAA;AACvB;AAOO,IAAM,SAAA,GAAY,CAAI,GAAA,EAAU,MAAA,KAAyC;AAC9E,EAAA,IAAI,MAAA,EAAQ;AACV,IAAA,OAAO,GAAA,CAAI,OAAO,CAAC,GAAA,EAAK,SAAS,GAAA,GAAM,MAAA,CAAO,IAAI,CAAA,EAAG,CAAC,CAAA;AAAA,EACxD;AACA,EAAA,OAAQ,IAAiB,MAAA,CAAO,CAAC,KAAK,IAAA,KAAS,GAAA,GAAM,MAAM,CAAC,CAAA;AAC9D;AAOO,IAAM,OAAA,GAAU,CAAI,GAAA,EAAU,MAAA,KAAyC;AAC5E,EAAA,IAAI,GAAA,CAAI,MAAA,KAAW,CAAA,EAAG,OAAO,CAAA;AAC7B,EAAA,IAAI,MAAA,EAAQ;AACV,IAAA,MAAMC,IAAAA,GAAM,GAAA,CAAI,MAAA,CAAO,CAAC,GAAA,EAAK,SAAS,GAAA,GAAM,MAAA,CAAO,IAAI,CAAA,EAAG,CAAC,CAAA;AAC3D,IAAA,OAAOA,OAAM,GAAA,CAAI,MAAA;AAAA,EACnB;AACA,EAAA,OAAQ,GAAA,CAAiB,OAAO,CAAC,GAAA,EAAK,SAAS,GAAA,GAAM,IAAA,EAAM,CAAC,CAAA,GAAI,GAAA,CAAI,MAAA;AACtE;AAOO,IAAM,QAAA,GAAW,CAAI,GAAA,EAAU,MAAA,KAAqD;AACzF,EAAA,IAAI,GAAA,CAAI,MAAA,KAAW,CAAA,EAAG,OAAO,MAAA;AAC7B,EAAA,IAAI,MAAA,EAAQ;AACV,IAAA,OAAO,KAAK,GAAA,CAAI,GAAG,GAAA,CAAI,GAAA,CAAI,MAAM,CAAC,CAAA;AAAA,EACpC;AACA,EAAA,OAAO,IAAA,CAAK,GAAA,CAAI,GAAI,GAAgB,CAAA;AACtC;AAOO,IAAM,QAAA,GAAW,CAAI,GAAA,EAAU,MAAA,KAAqD;AACzF,EAAA,IAAI,GAAA,CAAI,MAAA,KAAW,CAAA,EAAG,OAAO,MAAA;AAC7B,EAAA,IAAI,MAAA,EAAQ;AACV,IAAA,OAAO,KAAK,GAAA,CAAI,GAAG,GAAA,CAAI,GAAA,CAAI,MAAM,CAAC,CAAA;AAAA,EACpC;AACA,EAAA,OAAO,IAAA,CAAK,GAAA,CAAI,GAAI,GAAgB,CAAA;AACtC;AAOO,IAAM,QAAA,GAAW,CAAI,GAAA,EAAU,KAAA,KAAsB;AAC1D,EAAA,OAAO,GAAA,CAAI,SAAS,KAAK,CAAA;AAC3B;AAOO,IAAM,MAAA,GAAS,CAAI,GAAA,EAAU,KAAA,KAAkB;AACpD,EAAA,OAAO,GAAA,CAAI,MAAA,CAAO,CAAA,IAAA,KAAQ,IAAA,KAAS,KAAK,CAAA;AAC1C;AAOO,IAAM,QAAA,GAAW,CAAI,GAAA,EAAU,KAAA,KAAuB;AAC3D,EAAA,OAAO,IAAI,MAAA,CAAO,CAAC,CAAA,EAAG,CAAA,KAAM,MAAM,KAAK,CAAA;AACzC;AAQO,IAAM,MAAA,GAAS,CAAI,GAAA,EAAU,KAAA,EAAe,KAAA,KAAkB;AACnE,EAAA,OAAO,CAAC,GAAG,GAAA,CAAI,KAAA,CAAM,CAAA,EAAG,KAAK,CAAA,EAAG,KAAA,EAAO,GAAG,GAAA,CAAI,KAAA,CAAM,KAAK,CAAC,CAAA;AAC5D;AAQO,IAAM,IAAA,GAAO,CAAI,GAAA,EAAU,IAAA,EAAc,EAAA,KAAoB;AAClE,EAAA,MAAM,MAAA,GAAS,CAAC,GAAG,GAAG,CAAA;AACtB,EAAA,MAAM,CAAC,OAAO,CAAA,GAAI,MAAA,CAAO,MAAA,CAAO,MAAM,CAAC,CAAA;AACvC,EAAA,MAAA,CAAO,MAAA,CAAO,EAAA,EAAI,CAAA,EAAG,OAAO,CAAA;AAC5B,EAAA,OAAO,MAAA;AACT;AAOO,IAAM,WAAA,GAAc,CACzB,GAAA,EACA,OAAA,GAII,EAAC,KACG;AACR,EAAA,MAAM,EAAE,KAAA,GAAQ,IAAA,EAAM,cAAc,UAAA,EAAY,WAAA,GAAc,YAAW,GAAI,OAAA;AAE7E,EAAA,MAAMC,IAAAA,uBAAU,GAAA,EAAY;AAC5B,EAAA,MAAM,QAAa,EAAC;AAGpB,EAAA,GAAA,CAAI,QAAQ,CAAA,IAAA,KAAQ;AAClB,IAAAA,IAAAA,CAAI,GAAA,CAAI,IAAA,CAAK,KAAK,CAAA,EAAG,EAAE,GAAG,IAAA,EAAM,CAAC,WAAW,GAAG,IAAI,CAAA;AAAA,EACrD,CAAC,CAAA;AAGD,EAAAA,IAAAA,CAAI,QAAQ,CAAA,IAAA,KAAQ;AAClB,IAAA,MAAM,QAAA,GAAW,KAAK,WAAW,CAAA;AACjC,IAAA,IAAI,QAAA,IAAYA,IAAAA,CAAI,GAAA,CAAI,QAAQ,CAAA,EAAG;AACjC,MAAA,MAAM,MAAA,GAASA,IAAAA,CAAI,GAAA,CAAI,QAAQ,CAAA;AAC/B,MAAA,IAAI,MAAA,EAAQ;AACT,QAAC,MAAA,CAAO,WAAW,CAAA,CAAU,IAAA,CAAK,IAAI,CAAA;AAAA,MACzC;AAAA,IACF,CAAA,MAAO;AACL,MAAA,KAAA,CAAM,KAAK,IAAI,CAAA;AAAA,IACjB;AAAA,EACF,CAAC,CAAA;AAED,EAAA,OAAO,KAAA;AACT;AAOO,IAAM,WAAA,GAAc,CACzB,IAAA,EACA,WAAA,GAAc,UAAA,KACN;AACR,EAAA,MAAM,SAAc,EAAC;AAErB,EAAA,MAAM,QAAA,GAAW,CAAC,KAAA,KAAe;AAC/B,IAAA,KAAA,CAAM,QAAQ,CAAA,IAAA,KAAQ;AACpB,MAAA,MAAA,CAAO,KAAK,IAAI,CAAA;AAChB,MAAA,IAAI,KAAK,WAAW,CAAA,IAAK,KAAK,WAAW,CAAA,CAAE,SAAS,CAAA,EAAG;AACrD,QAAA,QAAA,CAAS,IAAA,CAAK,WAAW,CAAC,CAAA;AAAA,MAC5B;AAAA,IACF,CAAC,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,QAAA,CAAS,IAAI,CAAA;AACb,EAAA,OAAO,MAAA;AACT;AAQO,IAAM,QAAA,GAAW,CAAI,GAAA,EAAU,IAAA,EAAc,QAAA,KAA0B;AAC5E,EAAA,MAAM,KAAA,GAAA,CAAS,OAAO,CAAA,IAAK,QAAA;AAC3B,EAAA,OAAO,GAAA,CAAI,KAAA,CAAM,KAAA,EAAO,KAAA,GAAQ,QAAQ,CAAA;AAC1C;AAQO,IAAM,iBAAA,GAAoB,CAAC,KAAA,EAAe,IAAA,EAAc,QAAA,KAAqB;AAClF,EAAA,MAAM,UAAA,GAAa,IAAA,CAAK,IAAA,CAAK,KAAA,GAAQ,QAAQ,CAAA;AAC7C,EAAA,MAAM,UAAA,GAAA,CAAc,OAAO,CAAA,IAAK,QAAA;AAChC,EAAA,MAAM,QAAA,GAAW,IAAA,CAAK,GAAA,CAAI,UAAA,GAAa,UAAU,KAAK,CAAA;AAEtD,EAAA,OAAO;AAAA,IACL,KAAA;AAAA,IACA,IAAA;AAAA,IACA,QAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAS,IAAA,GAAO,UAAA;AAAA,IAChB,SAAS,IAAA,GAAO;AAAA,GAClB;AACF","file":"array.cjs","sourcesContent":["/**\n * 数组工具模块\n * 基于 es-toolkit 封装,提供常用的数组处理功能\n */\n\nimport {\n chunk,\n compact,\n difference,\n intersection,\n uniq,\n uniqBy,\n groupBy,\n sortBy,\n sample,\n sum,\n flatten,\n flattenDeep,\n head,\n last,\n isEqual,\n omit,\n} from 'es-toolkit'\n\n// 直接导出 es-toolkit 的常用方法\nexport {\n chunk,\n compact,\n difference,\n intersection,\n uniq,\n uniqBy,\n groupBy,\n sortBy,\n sample,\n sum,\n flatten,\n flattenDeep,\n head,\n last,\n isEqual,\n omit,\n}\n\n/**\n * 数组去重(支持对象数组的去重)\n * @param arr 数组\n * @param key 对象数组的去重键值\n */\nexport const unique = <T>(arr: T[], key?: keyof T): T[] => {\n if (key) {\n return uniqBy(arr, item => item[key] as any)\n }\n return uniq(arr)\n}\n\n/**\n * 获取数组最小值\n * @param arr 数组\n */\nexport const min = (arr: number[]): number | undefined => {\n if (arr.length === 0) return undefined\n return Math.min(...arr)\n}\n\n/**\n * 获取数组最大值\n * @param arr 数组\n */\nexport const max = (arr: number[]): number | undefined => {\n if (arr.length === 0) return undefined\n return Math.max(...arr)\n}\n\n/**\n * 判断数组是否为空\n * @param arr 数组\n */\nexport const isEmpty = <T>(arr: T[]): boolean => {\n return arr.length === 0\n}\n\n/**\n * 数组分割\n * @param arr 数组\n * @param size 每组大小\n */\nexport const split = <T>(arr: T[], size: number): T[][] => {\n const result: T[][] = []\n for (let i = 0; i < arr.length; i += size) {\n result.push(arr.slice(i, i + size))\n }\n return result\n}\n\n/**\n * 数组乱序\n * @param arr 数组\n */\nexport const shuffle = <T>(arr: T[]): T[] => {\n const result = [...arr]\n for (let i = result.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1))\n ;[result[i], result[j]] = [result[j], result[i]]\n }\n return result\n}\n\n/**\n * 查找元素的索引\n * @param arr 数组\n * @param predicate 查找条件\n */\nexport const findIndex = <T>(arr: T[], predicate: (item: T, index: number) => boolean): number => {\n return arr.findIndex(predicate)\n}\n\n/**\n * 查找元素\n * @param arr 数组\n * @param predicate 查找条件\n */\nexport const find = <T>(\n arr: T[],\n predicate: (item: T, index: number) => boolean\n): T | undefined => {\n return arr.find(predicate)\n}\n\n/**\n * 过滤数组\n * @param arr 数组\n * @param predicate 过滤条件\n */\nexport const filter = <T>(arr: T[], predicate: (item: T, index: number) => boolean): T[] => {\n return arr.filter(predicate)\n}\n\n/**\n * 映射数组\n * @param arr 数组\n * @param mapper 映射函数\n */\nexport const map = <T, R>(arr: T[], mapper: (item: T, index: number) => R): R[] => {\n return arr.map(mapper)\n}\n\n/**\n * 数组求和\n * @param arr 数组\n * @param mapper 转换函数\n */\nexport const reduceSum = <T>(arr: T[], mapper?: (item: T) => number): number => {\n if (mapper) {\n return arr.reduce((acc, item) => acc + mapper(item), 0)\n }\n return (arr as number[]).reduce((acc, item) => acc + item, 0)\n}\n\n/**\n * 数组求平均值\n * @param arr 数组\n * @param mapper 转换函数\n */\nexport const average = <T>(arr: T[], mapper?: (item: T) => number): number => {\n if (arr.length === 0) return 0\n if (mapper) {\n const sum = arr.reduce((acc, item) => acc + mapper(item), 0)\n return sum / arr.length\n }\n return (arr as number[]).reduce((acc, item) => acc + item, 0) / arr.length\n}\n\n/**\n * 数组最大值\n * @param arr 数组\n * @param mapper 转换函数\n */\nexport const maxValue = <T>(arr: T[], mapper?: (item: T) => number): number | undefined => {\n if (arr.length === 0) return undefined\n if (mapper) {\n return Math.max(...arr.map(mapper))\n }\n return Math.max(...(arr as number[]))\n}\n\n/**\n * 数组最小值\n * @param arr 数组\n * @param mapper 转换函数\n */\nexport const minValue = <T>(arr: T[], mapper?: (item: T) => number): number | undefined => {\n if (arr.length === 0) return undefined\n if (mapper) {\n return Math.min(...arr.map(mapper))\n }\n return Math.min(...(arr as number[]))\n}\n\n/**\n * 判断数组是否包含某个元素\n * @param arr 数组\n * @param value 值\n */\nexport const includes = <T>(arr: T[], value: T): boolean => {\n return arr.includes(value)\n}\n\n/**\n * 数组删除元素\n * @param arr 数组\n * @param value 值\n */\nexport const remove = <T>(arr: T[], value: T): T[] => {\n return arr.filter(item => item !== value)\n}\n\n/**\n * 数组删除指定索引元素\n * @param arr 数组\n * @param index 索引\n */\nexport const removeAt = <T>(arr: T[], index: number): T[] => {\n return arr.filter((_, i) => i !== index)\n}\n\n/**\n * 数组插入元素\n * @param arr 数组\n * @param index 索引\n * @param value 值\n */\nexport const insert = <T>(arr: T[], index: number, value: T): T[] => {\n return [...arr.slice(0, index), value, ...arr.slice(index)]\n}\n\n/**\n * 数组移动元素\n * @param arr 数组\n * @param from 源索引\n * @param to 目标索引\n */\nexport const move = <T>(arr: T[], from: number, to: number): T[] => {\n const result = [...arr]\n const [removed] = result.splice(from, 1)\n result.splice(to, 0, removed)\n return result\n}\n\n/**\n * 数组转树形结构\n * @param arr 数组\n * @param options 配置\n */\nexport const arrayToTree = <T extends Record<string, any>>(\n arr: T[],\n options: {\n idKey?: string\n parentIdKey?: string\n childrenKey?: string\n } = {}\n): T[] => {\n const { idKey = 'id', parentIdKey = 'parentId', childrenKey = 'children' } = options\n\n const map = new Map<any, T>()\n const roots: T[] = []\n\n // 创建映射\n arr.forEach(item => {\n map.set(item[idKey], { ...item, [childrenKey]: [] })\n })\n\n // 构建树\n map.forEach(item => {\n const parentId = item[parentIdKey]\n if (parentId && map.has(parentId)) {\n const parent = map.get(parentId)\n if (parent) {\n ;(parent[childrenKey] as T[]).push(item)\n }\n } else {\n roots.push(item)\n }\n })\n\n return roots\n}\n\n/**\n * 树形结构转数组\n * @param tree 树\n * @param childrenKey 子节点键名\n */\nexport const treeToArray = <T extends Record<string, any>>(\n tree: T[],\n childrenKey = 'children'\n): T[] => {\n const result: T[] = []\n\n const traverse = (nodes: T[]) => {\n nodes.forEach(node => {\n result.push(node)\n if (node[childrenKey] && node[childrenKey].length > 0) {\n traverse(node[childrenKey])\n }\n })\n }\n\n traverse(tree)\n return result\n}\n\n/**\n * 数组分页\n * @param arr 数组\n * @param page 页码(从1开始)\n * @param pageSize 每页数量\n */\nexport const paginate = <T>(arr: T[], page: number, pageSize: number): T[] => {\n const start = (page - 1) * pageSize\n return arr.slice(start, start + pageSize)\n}\n\n/**\n * 获取分页信息\n * @param total 总数\n * @param page 页码(从1开始)\n * @param pageSize 每页数量\n */\nexport const getPaginationInfo = (total: number, page: number, pageSize: number) => {\n const totalPages = Math.ceil(total / pageSize)\n const startIndex = (page - 1) * pageSize\n const endIndex = Math.min(startIndex + pageSize, total)\n\n return {\n total,\n page,\n pageSize,\n totalPages,\n startIndex,\n endIndex,\n hasNext: page < totalPages,\n hasPrev: page > 1,\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/modules/array/index.ts"],"names":["uniqBy","uniq","sum","map"],"mappings":"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","file":"array.cjs","sourcesContent":["/**\n * 数组工具模块\n * 基于 es-toolkit 封装,提供常用的数组处理功能\n */\n\nimport {\n chunk,\n compact,\n difference,\n intersection,\n uniq,\n uniqBy,\n groupBy,\n sortBy,\n sample,\n sum,\n flatten,\n flattenDeep,\n head,\n last,\n isEqual,\n omit,\n forEachAsync,\n forEachRight,\n} from 'es-toolkit'\n\n// 直接导出 es-toolkit 的常用方法\nexport {\n chunk,\n compact,\n difference,\n intersection,\n uniq,\n uniqBy,\n groupBy,\n sortBy,\n sample,\n sum,\n flatten,\n flattenDeep,\n head,\n last,\n isEqual,\n omit,\n forEachAsync,\n forEachRight,\n}\n\n/**\n * 数组去重(支持对象数组的去重)\n * @param arr 数组\n * @param key 对象数组的去重键值\n */\nexport const unique = <T>(arr: T[], key?: keyof T): T[] => {\n if (key) {\n return uniqBy(arr, item => item[key] as any)\n }\n return uniq(arr)\n}\n\n/**\n * 获取数组最小值\n * @param arr 数组\n */\nexport const min = (arr: number[]): number | undefined => {\n if (arr.length === 0) return undefined\n return Math.min(...arr)\n}\n\n/**\n * 获取数组最大值\n * @param arr 数组\n */\nexport const max = (arr: number[]): number | undefined => {\n if (arr.length === 0) return undefined\n return Math.max(...arr)\n}\n\n/**\n * 判断数组是否为空\n * @param arr 数组\n */\nexport const isEmpty = <T>(arr: T[]): boolean => {\n return arr.length === 0\n}\n\n/**\n * 数组分割\n * @param arr 数组\n * @param size 每组大小\n */\nexport const split = <T>(arr: T[], size: number): T[][] => {\n const result: T[][] = []\n for (let i = 0; i < arr.length; i += size) {\n result.push(arr.slice(i, i + size))\n }\n return result\n}\n\n/**\n * 数组乱序\n * @param arr 数组\n */\nexport const shuffle = <T>(arr: T[]): T[] => {\n const result = [...arr]\n for (let i = result.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1))\n ;[result[i], result[j]] = [result[j], result[i]]\n }\n return result\n}\n\n/**\n * 查找元素的索引\n * @param arr 数组\n * @param predicate 查找条件\n */\nexport const findIndex = <T>(arr: T[], predicate: (item: T, index: number) => boolean): number => {\n return arr.findIndex(predicate)\n}\n\n/**\n * 查找元素\n * @param arr 数组\n * @param predicate 查找条件\n */\nexport const find = <T>(\n arr: T[],\n predicate: (item: T, index: number) => boolean\n): T | undefined => {\n return arr.find(predicate)\n}\n\n/**\n * 过滤数组\n * @param arr 数组\n * @param predicate 过滤条件\n */\nexport const filter = <T>(arr: T[], predicate: (item: T, index: number) => boolean): T[] => {\n return arr.filter(predicate)\n}\n\n/**\n * 映射数组\n * @param arr 数组\n * @param mapper 映射函数\n */\nexport const map = <T, R>(arr: T[], mapper: (item: T, index: number) => R): R[] => {\n return arr.map(mapper)\n}\n\n/**\n * 数组求和\n * @param arr 数组\n * @param mapper 转换函数\n */\nexport const reduceSum = <T>(arr: T[], mapper?: (item: T) => number): number => {\n if (mapper) {\n return arr.reduce((acc, item) => acc + mapper(item), 0)\n }\n return (arr as number[]).reduce((acc, item) => acc + item, 0)\n}\n\n/**\n * 数组求平均值\n * @param arr 数组\n * @param mapper 转换函数\n */\nexport const average = <T>(arr: T[], mapper?: (item: T) => number): number => {\n if (arr.length === 0) return 0\n if (mapper) {\n const sum = arr.reduce((acc, item) => acc + mapper(item), 0)\n return sum / arr.length\n }\n return (arr as number[]).reduce((acc, item) => acc + item, 0) / arr.length\n}\n\n/**\n * 数组最大值\n * @param arr 数组\n * @param mapper 转换函数\n */\nexport const maxValue = <T>(arr: T[], mapper?: (item: T) => number): number | undefined => {\n if (arr.length === 0) return undefined\n if (mapper) {\n return Math.max(...arr.map(mapper))\n }\n return Math.max(...(arr as number[]))\n}\n\n/**\n * 数组最小值\n * @param arr 数组\n * @param mapper 转换函数\n */\nexport const minValue = <T>(arr: T[], mapper?: (item: T) => number): number | undefined => {\n if (arr.length === 0) return undefined\n if (mapper) {\n return Math.min(...arr.map(mapper))\n }\n return Math.min(...(arr as number[]))\n}\n\n/**\n * 判断数组是否包含某个元素\n * @param arr 数组\n * @param value 值\n */\nexport const includes = <T>(arr: T[], value: T): boolean => {\n return arr.includes(value)\n}\n\n/**\n * 数组删除元素\n * @param arr 数组\n * @param value 值\n */\nexport const remove = <T>(arr: T[], value: T): T[] => {\n return arr.filter(item => item !== value)\n}\n\n/**\n * 数组删除指定索引元素\n * @param arr 数组\n * @param index 索引\n */\nexport const removeAt = <T>(arr: T[], index: number): T[] => {\n return arr.filter((_, i) => i !== index)\n}\n\n/**\n * 数组插入元素\n * @param arr 数组\n * @param index 索引\n * @param value 值\n */\nexport const insert = <T>(arr: T[], index: number, value: T): T[] => {\n return [...arr.slice(0, index), value, ...arr.slice(index)]\n}\n\n/**\n * 数组移动元素\n * @param arr 数组\n * @param from 源索引\n * @param to 目标索引\n */\nexport const move = <T>(arr: T[], from: number, to: number): T[] => {\n const result = [...arr]\n const [removed] = result.splice(from, 1)\n result.splice(to, 0, removed)\n return result\n}\n\n/**\n * 数组转树形结构\n * @param arr 数组\n * @param options 配置\n */\nexport const arrayToTree = <T extends Record<string, any>>(\n arr: T[],\n options: {\n idKey?: string\n parentIdKey?: string\n childrenKey?: string\n } = {}\n): T[] => {\n const { idKey = 'id', parentIdKey = 'parentId', childrenKey = 'children' } = options\n\n const map = new Map<any, T>()\n const roots: T[] = []\n\n // 创建映射\n arr.forEach(item => {\n map.set(item[idKey], { ...item, [childrenKey]: [] })\n })\n\n // 构建树\n map.forEach(item => {\n const parentId = item[parentIdKey]\n if (parentId && map.has(parentId)) {\n const parent = map.get(parentId)\n if (parent) {\n ;(parent[childrenKey] as T[]).push(item)\n }\n } else {\n roots.push(item)\n }\n })\n\n return roots\n}\n\n/**\n * 树形结构转数组\n * @param tree 树\n * @param childrenKey 子节点键名\n */\nexport const treeToArray = <T extends Record<string, any>>(\n tree: T[],\n childrenKey = 'children'\n): T[] => {\n const result: T[] = []\n\n const traverse = (nodes: T[]) => {\n nodes.forEach(node => {\n result.push(node)\n if (node[childrenKey] && node[childrenKey].length > 0) {\n traverse(node[childrenKey])\n }\n })\n }\n\n traverse(tree)\n return result\n}\n\n/**\n * 数组分页\n * @param arr 数组\n * @param page 页码(从1开始)\n * @param pageSize 每页数量\n */\nexport const paginate = <T>(arr: T[], page: number, pageSize: number): T[] => {\n const start = (page - 1) * pageSize\n return arr.slice(start, start + pageSize)\n}\n\n/**\n * 获取分页信息\n * @param total 总数\n * @param page 页码(从1开始)\n * @param pageSize 每页数量\n */\nexport const getPaginationInfo = (total: number, page: number, pageSize: number) => {\n const totalPages = Math.ceil(total / pageSize)\n const startIndex = (page - 1) * pageSize\n const endIndex = Math.min(startIndex + pageSize, total)\n\n return {\n total,\n page,\n pageSize,\n totalPages,\n startIndex,\n endIndex,\n hasNext: page < totalPages,\n hasPrev: page > 1,\n }\n}\n"]}
|
package/dist/array.d.cts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { chunk, compact, difference, flatten, flattenDeep, groupBy, head, intersection, isEqual, last, omit, sample, sortBy, sum, uniq, uniqBy } from 'es-toolkit';
|
|
2
|
-
export { a as arrayToTree, b as average, f as filter, c as find, d as findIndex, g as getPaginationInfo, e as includes, h as insert, j as isEmpty, m as map, k as max, l as maxValue, n as min, o as minValue, p as move, q as paginate, r as reduceSum, s as remove, t as removeAt, u as shuffle, v as split, w as treeToArray, x as unique } from './index-
|
|
1
|
+
export { chunk, compact, difference, flatten, flattenDeep, forEachAsync, forEachRight, groupBy, head, intersection, isEqual, last, omit, sample, sortBy, sum, uniq, uniqBy } from 'es-toolkit';
|
|
2
|
+
export { a as arrayToTree, b as average, f as filter, c as find, d as findIndex, g as getPaginationInfo, e as includes, h as insert, j as isEmpty, m as map, k as max, l as maxValue, n as min, o as minValue, p as move, q as paginate, r as reduceSum, s as remove, t as removeAt, u as shuffle, v as split, w as treeToArray, x as unique } from './index-BexwNzGt.cjs';
|
package/dist/array.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { chunk, compact, difference, flatten, flattenDeep, groupBy, head, intersection, isEqual, last, omit, sample, sortBy, sum, uniq, uniqBy } from 'es-toolkit';
|
|
2
|
-
export { a as arrayToTree, b as average, f as filter, c as find, d as findIndex, g as getPaginationInfo, e as includes, h as insert, j as isEmpty, m as map, k as max, l as maxValue, n as min, o as minValue, p as move, q as paginate, r as reduceSum, s as remove, t as removeAt, u as shuffle, v as split, w as treeToArray, x as unique } from './index-
|
|
1
|
+
export { chunk, compact, difference, flatten, flattenDeep, forEachAsync, forEachRight, groupBy, head, intersection, isEqual, last, omit, sample, sortBy, sum, uniq, uniqBy } from 'es-toolkit';
|
|
2
|
+
export { a as arrayToTree, b as average, f as filter, c as find, d as findIndex, g as getPaginationInfo, e as includes, h as insert, j as isEmpty, m as map, k as max, l as maxValue, n as min, o as minValue, p as move, q as paginate, r as reduceSum, s as remove, t as removeAt, u as shuffle, v as split, w as treeToArray, x as unique } from './index-BexwNzGt.js';
|
package/dist/array.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { uniqBy, uniq } from 'es-toolkit';
|
|
2
|
-
export { chunk, compact, difference, flatten, flattenDeep, groupBy, head, intersection, isEqual, last, omit, sample, sortBy, sum, uniq, uniqBy } from 'es-toolkit';
|
|
2
|
+
export { chunk, compact, difference, flatten, flattenDeep, forEachAsync, forEachRight, groupBy, head, intersection, isEqual, last, omit, sample, sortBy, sum, uniq, uniqBy } from 'es-toolkit';
|
|
3
3
|
|
|
4
4
|
// src/modules/array/index.ts
|
|
5
5
|
var unique = (arr, key) => {
|
package/dist/array.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/modules/array/index.ts"],"names":["sum","map"],"mappings":"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","file":"array.js","sourcesContent":["/**\n * 数组工具模块\n * 基于 es-toolkit 封装,提供常用的数组处理功能\n */\n\nimport {\n chunk,\n compact,\n difference,\n intersection,\n uniq,\n uniqBy,\n groupBy,\n sortBy,\n sample,\n sum,\n flatten,\n flattenDeep,\n head,\n last,\n isEqual,\n omit,\n} from 'es-toolkit'\n\n// 直接导出 es-toolkit 的常用方法\nexport {\n chunk,\n compact,\n difference,\n intersection,\n uniq,\n uniqBy,\n groupBy,\n sortBy,\n sample,\n sum,\n flatten,\n flattenDeep,\n head,\n last,\n isEqual,\n omit,\n}\n\n/**\n * 数组去重(支持对象数组的去重)\n * @param arr 数组\n * @param key 对象数组的去重键值\n */\nexport const unique = <T>(arr: T[], key?: keyof T): T[] => {\n if (key) {\n return uniqBy(arr, item => item[key] as any)\n }\n return uniq(arr)\n}\n\n/**\n * 获取数组最小值\n * @param arr 数组\n */\nexport const min = (arr: number[]): number | undefined => {\n if (arr.length === 0) return undefined\n return Math.min(...arr)\n}\n\n/**\n * 获取数组最大值\n * @param arr 数组\n */\nexport const max = (arr: number[]): number | undefined => {\n if (arr.length === 0) return undefined\n return Math.max(...arr)\n}\n\n/**\n * 判断数组是否为空\n * @param arr 数组\n */\nexport const isEmpty = <T>(arr: T[]): boolean => {\n return arr.length === 0\n}\n\n/**\n * 数组分割\n * @param arr 数组\n * @param size 每组大小\n */\nexport const split = <T>(arr: T[], size: number): T[][] => {\n const result: T[][] = []\n for (let i = 0; i < arr.length; i += size) {\n result.push(arr.slice(i, i + size))\n }\n return result\n}\n\n/**\n * 数组乱序\n * @param arr 数组\n */\nexport const shuffle = <T>(arr: T[]): T[] => {\n const result = [...arr]\n for (let i = result.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1))\n ;[result[i], result[j]] = [result[j], result[i]]\n }\n return result\n}\n\n/**\n * 查找元素的索引\n * @param arr 数组\n * @param predicate 查找条件\n */\nexport const findIndex = <T>(arr: T[], predicate: (item: T, index: number) => boolean): number => {\n return arr.findIndex(predicate)\n}\n\n/**\n * 查找元素\n * @param arr 数组\n * @param predicate 查找条件\n */\nexport const find = <T>(\n arr: T[],\n predicate: (item: T, index: number) => boolean\n): T | undefined => {\n return arr.find(predicate)\n}\n\n/**\n * 过滤数组\n * @param arr 数组\n * @param predicate 过滤条件\n */\nexport const filter = <T>(arr: T[], predicate: (item: T, index: number) => boolean): T[] => {\n return arr.filter(predicate)\n}\n\n/**\n * 映射数组\n * @param arr 数组\n * @param mapper 映射函数\n */\nexport const map = <T, R>(arr: T[], mapper: (item: T, index: number) => R): R[] => {\n return arr.map(mapper)\n}\n\n/**\n * 数组求和\n * @param arr 数组\n * @param mapper 转换函数\n */\nexport const reduceSum = <T>(arr: T[], mapper?: (item: T) => number): number => {\n if (mapper) {\n return arr.reduce((acc, item) => acc + mapper(item), 0)\n }\n return (arr as number[]).reduce((acc, item) => acc + item, 0)\n}\n\n/**\n * 数组求平均值\n * @param arr 数组\n * @param mapper 转换函数\n */\nexport const average = <T>(arr: T[], mapper?: (item: T) => number): number => {\n if (arr.length === 0) return 0\n if (mapper) {\n const sum = arr.reduce((acc, item) => acc + mapper(item), 0)\n return sum / arr.length\n }\n return (arr as number[]).reduce((acc, item) => acc + item, 0) / arr.length\n}\n\n/**\n * 数组最大值\n * @param arr 数组\n * @param mapper 转换函数\n */\nexport const maxValue = <T>(arr: T[], mapper?: (item: T) => number): number | undefined => {\n if (arr.length === 0) return undefined\n if (mapper) {\n return Math.max(...arr.map(mapper))\n }\n return Math.max(...(arr as number[]))\n}\n\n/**\n * 数组最小值\n * @param arr 数组\n * @param mapper 转换函数\n */\nexport const minValue = <T>(arr: T[], mapper?: (item: T) => number): number | undefined => {\n if (arr.length === 0) return undefined\n if (mapper) {\n return Math.min(...arr.map(mapper))\n }\n return Math.min(...(arr as number[]))\n}\n\n/**\n * 判断数组是否包含某个元素\n * @param arr 数组\n * @param value 值\n */\nexport const includes = <T>(arr: T[], value: T): boolean => {\n return arr.includes(value)\n}\n\n/**\n * 数组删除元素\n * @param arr 数组\n * @param value 值\n */\nexport const remove = <T>(arr: T[], value: T): T[] => {\n return arr.filter(item => item !== value)\n}\n\n/**\n * 数组删除指定索引元素\n * @param arr 数组\n * @param index 索引\n */\nexport const removeAt = <T>(arr: T[], index: number): T[] => {\n return arr.filter((_, i) => i !== index)\n}\n\n/**\n * 数组插入元素\n * @param arr 数组\n * @param index 索引\n * @param value 值\n */\nexport const insert = <T>(arr: T[], index: number, value: T): T[] => {\n return [...arr.slice(0, index), value, ...arr.slice(index)]\n}\n\n/**\n * 数组移动元素\n * @param arr 数组\n * @param from 源索引\n * @param to 目标索引\n */\nexport const move = <T>(arr: T[], from: number, to: number): T[] => {\n const result = [...arr]\n const [removed] = result.splice(from, 1)\n result.splice(to, 0, removed)\n return result\n}\n\n/**\n * 数组转树形结构\n * @param arr 数组\n * @param options 配置\n */\nexport const arrayToTree = <T extends Record<string, any>>(\n arr: T[],\n options: {\n idKey?: string\n parentIdKey?: string\n childrenKey?: string\n } = {}\n): T[] => {\n const { idKey = 'id', parentIdKey = 'parentId', childrenKey = 'children' } = options\n\n const map = new Map<any, T>()\n const roots: T[] = []\n\n // 创建映射\n arr.forEach(item => {\n map.set(item[idKey], { ...item, [childrenKey]: [] })\n })\n\n // 构建树\n map.forEach(item => {\n const parentId = item[parentIdKey]\n if (parentId && map.has(parentId)) {\n const parent = map.get(parentId)\n if (parent) {\n ;(parent[childrenKey] as T[]).push(item)\n }\n } else {\n roots.push(item)\n }\n })\n\n return roots\n}\n\n/**\n * 树形结构转数组\n * @param tree 树\n * @param childrenKey 子节点键名\n */\nexport const treeToArray = <T extends Record<string, any>>(\n tree: T[],\n childrenKey = 'children'\n): T[] => {\n const result: T[] = []\n\n const traverse = (nodes: T[]) => {\n nodes.forEach(node => {\n result.push(node)\n if (node[childrenKey] && node[childrenKey].length > 0) {\n traverse(node[childrenKey])\n }\n })\n }\n\n traverse(tree)\n return result\n}\n\n/**\n * 数组分页\n * @param arr 数组\n * @param page 页码(从1开始)\n * @param pageSize 每页数量\n */\nexport const paginate = <T>(arr: T[], page: number, pageSize: number): T[] => {\n const start = (page - 1) * pageSize\n return arr.slice(start, start + pageSize)\n}\n\n/**\n * 获取分页信息\n * @param total 总数\n * @param page 页码(从1开始)\n * @param pageSize 每页数量\n */\nexport const getPaginationInfo = (total: number, page: number, pageSize: number) => {\n const totalPages = Math.ceil(total / pageSize)\n const startIndex = (page - 1) * pageSize\n const endIndex = Math.min(startIndex + pageSize, total)\n\n return {\n total,\n page,\n pageSize,\n totalPages,\n startIndex,\n endIndex,\n hasNext: page < totalPages,\n hasPrev: page > 1,\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/modules/array/index.ts"],"names":["sum","map"],"mappings":"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","file":"array.js","sourcesContent":["/**\n * 数组工具模块\n * 基于 es-toolkit 封装,提供常用的数组处理功能\n */\n\nimport {\n chunk,\n compact,\n difference,\n intersection,\n uniq,\n uniqBy,\n groupBy,\n sortBy,\n sample,\n sum,\n flatten,\n flattenDeep,\n head,\n last,\n isEqual,\n omit,\n forEachAsync,\n forEachRight,\n} from 'es-toolkit'\n\n// 直接导出 es-toolkit 的常用方法\nexport {\n chunk,\n compact,\n difference,\n intersection,\n uniq,\n uniqBy,\n groupBy,\n sortBy,\n sample,\n sum,\n flatten,\n flattenDeep,\n head,\n last,\n isEqual,\n omit,\n forEachAsync,\n forEachRight,\n}\n\n/**\n * 数组去重(支持对象数组的去重)\n * @param arr 数组\n * @param key 对象数组的去重键值\n */\nexport const unique = <T>(arr: T[], key?: keyof T): T[] => {\n if (key) {\n return uniqBy(arr, item => item[key] as any)\n }\n return uniq(arr)\n}\n\n/**\n * 获取数组最小值\n * @param arr 数组\n */\nexport const min = (arr: number[]): number | undefined => {\n if (arr.length === 0) return undefined\n return Math.min(...arr)\n}\n\n/**\n * 获取数组最大值\n * @param arr 数组\n */\nexport const max = (arr: number[]): number | undefined => {\n if (arr.length === 0) return undefined\n return Math.max(...arr)\n}\n\n/**\n * 判断数组是否为空\n * @param arr 数组\n */\nexport const isEmpty = <T>(arr: T[]): boolean => {\n return arr.length === 0\n}\n\n/**\n * 数组分割\n * @param arr 数组\n * @param size 每组大小\n */\nexport const split = <T>(arr: T[], size: number): T[][] => {\n const result: T[][] = []\n for (let i = 0; i < arr.length; i += size) {\n result.push(arr.slice(i, i + size))\n }\n return result\n}\n\n/**\n * 数组乱序\n * @param arr 数组\n */\nexport const shuffle = <T>(arr: T[]): T[] => {\n const result = [...arr]\n for (let i = result.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1))\n ;[result[i], result[j]] = [result[j], result[i]]\n }\n return result\n}\n\n/**\n * 查找元素的索引\n * @param arr 数组\n * @param predicate 查找条件\n */\nexport const findIndex = <T>(arr: T[], predicate: (item: T, index: number) => boolean): number => {\n return arr.findIndex(predicate)\n}\n\n/**\n * 查找元素\n * @param arr 数组\n * @param predicate 查找条件\n */\nexport const find = <T>(\n arr: T[],\n predicate: (item: T, index: number) => boolean\n): T | undefined => {\n return arr.find(predicate)\n}\n\n/**\n * 过滤数组\n * @param arr 数组\n * @param predicate 过滤条件\n */\nexport const filter = <T>(arr: T[], predicate: (item: T, index: number) => boolean): T[] => {\n return arr.filter(predicate)\n}\n\n/**\n * 映射数组\n * @param arr 数组\n * @param mapper 映射函数\n */\nexport const map = <T, R>(arr: T[], mapper: (item: T, index: number) => R): R[] => {\n return arr.map(mapper)\n}\n\n/**\n * 数组求和\n * @param arr 数组\n * @param mapper 转换函数\n */\nexport const reduceSum = <T>(arr: T[], mapper?: (item: T) => number): number => {\n if (mapper) {\n return arr.reduce((acc, item) => acc + mapper(item), 0)\n }\n return (arr as number[]).reduce((acc, item) => acc + item, 0)\n}\n\n/**\n * 数组求平均值\n * @param arr 数组\n * @param mapper 转换函数\n */\nexport const average = <T>(arr: T[], mapper?: (item: T) => number): number => {\n if (arr.length === 0) return 0\n if (mapper) {\n const sum = arr.reduce((acc, item) => acc + mapper(item), 0)\n return sum / arr.length\n }\n return (arr as number[]).reduce((acc, item) => acc + item, 0) / arr.length\n}\n\n/**\n * 数组最大值\n * @param arr 数组\n * @param mapper 转换函数\n */\nexport const maxValue = <T>(arr: T[], mapper?: (item: T) => number): number | undefined => {\n if (arr.length === 0) return undefined\n if (mapper) {\n return Math.max(...arr.map(mapper))\n }\n return Math.max(...(arr as number[]))\n}\n\n/**\n * 数组最小值\n * @param arr 数组\n * @param mapper 转换函数\n */\nexport const minValue = <T>(arr: T[], mapper?: (item: T) => number): number | undefined => {\n if (arr.length === 0) return undefined\n if (mapper) {\n return Math.min(...arr.map(mapper))\n }\n return Math.min(...(arr as number[]))\n}\n\n/**\n * 判断数组是否包含某个元素\n * @param arr 数组\n * @param value 值\n */\nexport const includes = <T>(arr: T[], value: T): boolean => {\n return arr.includes(value)\n}\n\n/**\n * 数组删除元素\n * @param arr 数组\n * @param value 值\n */\nexport const remove = <T>(arr: T[], value: T): T[] => {\n return arr.filter(item => item !== value)\n}\n\n/**\n * 数组删除指定索引元素\n * @param arr 数组\n * @param index 索引\n */\nexport const removeAt = <T>(arr: T[], index: number): T[] => {\n return arr.filter((_, i) => i !== index)\n}\n\n/**\n * 数组插入元素\n * @param arr 数组\n * @param index 索引\n * @param value 值\n */\nexport const insert = <T>(arr: T[], index: number, value: T): T[] => {\n return [...arr.slice(0, index), value, ...arr.slice(index)]\n}\n\n/**\n * 数组移动元素\n * @param arr 数组\n * @param from 源索引\n * @param to 目标索引\n */\nexport const move = <T>(arr: T[], from: number, to: number): T[] => {\n const result = [...arr]\n const [removed] = result.splice(from, 1)\n result.splice(to, 0, removed)\n return result\n}\n\n/**\n * 数组转树形结构\n * @param arr 数组\n * @param options 配置\n */\nexport const arrayToTree = <T extends Record<string, any>>(\n arr: T[],\n options: {\n idKey?: string\n parentIdKey?: string\n childrenKey?: string\n } = {}\n): T[] => {\n const { idKey = 'id', parentIdKey = 'parentId', childrenKey = 'children' } = options\n\n const map = new Map<any, T>()\n const roots: T[] = []\n\n // 创建映射\n arr.forEach(item => {\n map.set(item[idKey], { ...item, [childrenKey]: [] })\n })\n\n // 构建树\n map.forEach(item => {\n const parentId = item[parentIdKey]\n if (parentId && map.has(parentId)) {\n const parent = map.get(parentId)\n if (parent) {\n ;(parent[childrenKey] as T[]).push(item)\n }\n } else {\n roots.push(item)\n }\n })\n\n return roots\n}\n\n/**\n * 树形结构转数组\n * @param tree 树\n * @param childrenKey 子节点键名\n */\nexport const treeToArray = <T extends Record<string, any>>(\n tree: T[],\n childrenKey = 'children'\n): T[] => {\n const result: T[] = []\n\n const traverse = (nodes: T[]) => {\n nodes.forEach(node => {\n result.push(node)\n if (node[childrenKey] && node[childrenKey].length > 0) {\n traverse(node[childrenKey])\n }\n })\n }\n\n traverse(tree)\n return result\n}\n\n/**\n * 数组分页\n * @param arr 数组\n * @param page 页码(从1开始)\n * @param pageSize 每页数量\n */\nexport const paginate = <T>(arr: T[], page: number, pageSize: number): T[] => {\n const start = (page - 1) * pageSize\n return arr.slice(start, start + pageSize)\n}\n\n/**\n * 获取分页信息\n * @param total 总数\n * @param page 页码(从1开始)\n * @param pageSize 每页数量\n */\nexport const getPaginationInfo = (total: number, page: number, pageSize: number) => {\n const totalPages = Math.ceil(total / pageSize)\n const startIndex = (page - 1) * pageSize\n const endIndex = Math.min(startIndex + pageSize, total)\n\n return {\n total,\n page,\n pageSize,\n totalPages,\n startIndex,\n endIndex,\n hasNext: page < totalPages,\n hasPrev: page > 1,\n }\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { chunk, compact, difference, flatten, flattenDeep, groupBy, head, intersection, isEqual, last, omit, sample, sortBy, sum, uniq, uniqBy } from 'es-toolkit';
|
|
1
|
+
import { chunk, compact, difference, flatten, flattenDeep, forEachAsync, forEachRight, groupBy, head, intersection, isEqual, last, omit, sample, sortBy, sum, uniq, uniqBy } from 'es-toolkit';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* 数组工具模块
|
|
@@ -167,6 +167,8 @@ declare const index_find: typeof find;
|
|
|
167
167
|
declare const index_findIndex: typeof findIndex;
|
|
168
168
|
declare const index_flatten: typeof flatten;
|
|
169
169
|
declare const index_flattenDeep: typeof flattenDeep;
|
|
170
|
+
declare const index_forEachAsync: typeof forEachAsync;
|
|
171
|
+
declare const index_forEachRight: typeof forEachRight;
|
|
170
172
|
declare const index_getPaginationInfo: typeof getPaginationInfo;
|
|
171
173
|
declare const index_groupBy: typeof groupBy;
|
|
172
174
|
declare const index_head: typeof head;
|
|
@@ -197,7 +199,7 @@ declare const index_uniq: typeof uniq;
|
|
|
197
199
|
declare const index_uniqBy: typeof uniqBy;
|
|
198
200
|
declare const index_unique: typeof unique;
|
|
199
201
|
declare namespace index {
|
|
200
|
-
export { index_arrayToTree as arrayToTree, index_average as average, index_chunk as chunk, index_compact as compact, index_difference as difference, index_filter as filter, index_find as find, index_findIndex as findIndex, index_flatten as flatten, index_flattenDeep as flattenDeep, index_getPaginationInfo as getPaginationInfo, index_groupBy as groupBy, index_head as head, index_includes as includes, index_insert as insert, index_intersection as intersection, index_isEmpty as isEmpty, index_isEqual as isEqual, index_last as last, index_map as map, index_max as max, index_maxValue as maxValue, index_min as min, index_minValue as minValue, index_move as move, index_omit as omit, index_paginate as paginate, index_reduceSum as reduceSum, index_remove as remove, index_removeAt as removeAt, index_sample as sample, index_shuffle as shuffle, index_sortBy as sortBy, index_split as split, index_sum as sum, index_treeToArray as treeToArray, index_uniq as uniq, index_uniqBy as uniqBy, index_unique as unique };
|
|
202
|
+
export { index_arrayToTree as arrayToTree, index_average as average, index_chunk as chunk, index_compact as compact, index_difference as difference, index_filter as filter, index_find as find, index_findIndex as findIndex, index_flatten as flatten, index_flattenDeep as flattenDeep, index_forEachAsync as forEachAsync, index_forEachRight as forEachRight, index_getPaginationInfo as getPaginationInfo, index_groupBy as groupBy, index_head as head, index_includes as includes, index_insert as insert, index_intersection as intersection, index_isEmpty as isEmpty, index_isEqual as isEqual, index_last as last, index_map as map, index_max as max, index_maxValue as maxValue, index_min as min, index_minValue as minValue, index_move as move, index_omit as omit, index_paginate as paginate, index_reduceSum as reduceSum, index_remove as remove, index_removeAt as removeAt, index_sample as sample, index_shuffle as shuffle, index_sortBy as sortBy, index_split as split, index_sum as sum, index_treeToArray as treeToArray, index_uniq as uniq, index_uniqBy as uniqBy, index_unique as unique };
|
|
201
203
|
}
|
|
202
204
|
|
|
203
205
|
export { arrayToTree as a, average as b, find as c, findIndex as d, includes as e, filter as f, getPaginationInfo as g, insert as h, index as i, isEmpty as j, max as k, maxValue as l, map as m, min as n, minValue as o, move as p, paginate as q, reduceSum as r, remove as s, removeAt as t, shuffle as u, split as v, treeToArray as w, unique as x };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { chunk, compact, difference, flatten, flattenDeep, groupBy, head, intersection, isEqual, last, omit, sample, sortBy, sum, uniq, uniqBy } from 'es-toolkit';
|
|
1
|
+
import { chunk, compact, difference, flatten, flattenDeep, forEachAsync, forEachRight, groupBy, head, intersection, isEqual, last, omit, sample, sortBy, sum, uniq, uniqBy } from 'es-toolkit';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* 数组工具模块
|
|
@@ -167,6 +167,8 @@ declare const index_find: typeof find;
|
|
|
167
167
|
declare const index_findIndex: typeof findIndex;
|
|
168
168
|
declare const index_flatten: typeof flatten;
|
|
169
169
|
declare const index_flattenDeep: typeof flattenDeep;
|
|
170
|
+
declare const index_forEachAsync: typeof forEachAsync;
|
|
171
|
+
declare const index_forEachRight: typeof forEachRight;
|
|
170
172
|
declare const index_getPaginationInfo: typeof getPaginationInfo;
|
|
171
173
|
declare const index_groupBy: typeof groupBy;
|
|
172
174
|
declare const index_head: typeof head;
|
|
@@ -197,7 +199,7 @@ declare const index_uniq: typeof uniq;
|
|
|
197
199
|
declare const index_uniqBy: typeof uniqBy;
|
|
198
200
|
declare const index_unique: typeof unique;
|
|
199
201
|
declare namespace index {
|
|
200
|
-
export { index_arrayToTree as arrayToTree, index_average as average, index_chunk as chunk, index_compact as compact, index_difference as difference, index_filter as filter, index_find as find, index_findIndex as findIndex, index_flatten as flatten, index_flattenDeep as flattenDeep, index_getPaginationInfo as getPaginationInfo, index_groupBy as groupBy, index_head as head, index_includes as includes, index_insert as insert, index_intersection as intersection, index_isEmpty as isEmpty, index_isEqual as isEqual, index_last as last, index_map as map, index_max as max, index_maxValue as maxValue, index_min as min, index_minValue as minValue, index_move as move, index_omit as omit, index_paginate as paginate, index_reduceSum as reduceSum, index_remove as remove, index_removeAt as removeAt, index_sample as sample, index_shuffle as shuffle, index_sortBy as sortBy, index_split as split, index_sum as sum, index_treeToArray as treeToArray, index_uniq as uniq, index_uniqBy as uniqBy, index_unique as unique };
|
|
202
|
+
export { index_arrayToTree as arrayToTree, index_average as average, index_chunk as chunk, index_compact as compact, index_difference as difference, index_filter as filter, index_find as find, index_findIndex as findIndex, index_flatten as flatten, index_flattenDeep as flattenDeep, index_forEachAsync as forEachAsync, index_forEachRight as forEachRight, index_getPaginationInfo as getPaginationInfo, index_groupBy as groupBy, index_head as head, index_includes as includes, index_insert as insert, index_intersection as intersection, index_isEmpty as isEmpty, index_isEqual as isEqual, index_last as last, index_map as map, index_max as max, index_maxValue as maxValue, index_min as min, index_minValue as minValue, index_move as move, index_omit as omit, index_paginate as paginate, index_reduceSum as reduceSum, index_remove as remove, index_removeAt as removeAt, index_sample as sample, index_shuffle as shuffle, index_sortBy as sortBy, index_split as split, index_sum as sum, index_treeToArray as treeToArray, index_uniq as uniq, index_uniqBy as uniqBy, index_unique as unique };
|
|
201
203
|
}
|
|
202
204
|
|
|
203
205
|
export { arrayToTree as a, average as b, find as c, findIndex as d, includes as e, filter as f, getPaginationInfo as g, insert as h, index as i, isEmpty as j, max as k, maxValue as l, map as m, min as n, minValue as o, move as p, paginate as q, reduceSum as r, remove as s, removeAt as t, shuffle as u, split as v, treeToArray as w, unique as x };
|
package/dist/index.cjs
CHANGED
|
@@ -627,6 +627,8 @@ __export(array_exports, {
|
|
|
627
627
|
findIndex: () => findIndex,
|
|
628
628
|
flatten: () => esToolkit.flatten,
|
|
629
629
|
flattenDeep: () => esToolkit.flattenDeep,
|
|
630
|
+
forEachAsync: () => esToolkit.forEachAsync,
|
|
631
|
+
forEachRight: () => esToolkit.forEachRight,
|
|
630
632
|
getPaginationInfo: () => getPaginationInfo,
|
|
631
633
|
groupBy: () => esToolkit.groupBy,
|
|
632
634
|
head: () => esToolkit.head,
|