@art-suite/art-core-ts-containers

中文文档
1.0.1发布于 2026/06/19MITTypeScriptESM + CJS近 30 天下载 3230

TypeScript 字符串工具库

中文使用文档
文档目录10 节
  1. 为什么是这个模块?
  2. 安装和使用示例( 需要)
  3. 职能概览
  4. 对象合并
  5. 对象深度合并
  6. 阵列公用事业
  7. 对象密钥工具
  8. 裸体剥离公用事业
  9. API 文档参考
  10. 功能优化( 进行中的工作)

@art-site/art-core-ts-containers (中文(简体) )

在JavaScript和TypeScript中与阵列和平面对象合作的基本,高性能公用事业.

为什么是这个模块?

在现代JavaScript中,由于对象结构、分解和扩散,与阵列和平面对象合作变得容易得多(...接线员。 然而,一些核心能力在本土JavaScript中仍然缺失或效率低下. 最重要的是:

  • 健全纯功能,优化实施 merge 处理 null 财务报告和审定财务报表 undefined 价值明显用于最大功用
  • 用于平整和压缩阵列的高效公用事业.
  • 检查对象是否有密钥或数出其密钥的最快方式( 自 Object.keys(obj).length 缓慢).

安装和使用示例( 需要)

用 npm 安装 :

npm install @art-suite/art-core-ts-containers

基本用途:

import {
  merge,
  deepMerge,
  deepMergeInfo,
  compactFlatten,
  objectHasKeys,
  objectKeyCount,
  deepStripNulls,
  deepStripNullish,
  stripNulls,
  stripNullish,
} from "@art-suite/art-core-ts-containers";

// Merge objects: later objects take priority, null deletes, undefined is ignored/stripped
merge({ a: 1, b: 2, c: 3 }, { b: null, c: undefined, d: 4 }); // { a: 1, b: null, d: 4 }

// Deep merge vs shallow merge with nested objects
const base = { a: 1, b: { x: 1, y: 2 }, c: [1, 2] };
const update = { b: { y: 3, z: 4 }, c: [3, 4], d: 5 };

merge(base, update); // { a: 1, b: { y: 3, z: 4 }, c: [3, 4], d: 5 } - b.x is lost!
deepMerge(base, update); // { a: 1, b: { x: 1, y: 3, z: 4 }, c: [3, 4], d: 5 } - b.x preserved

// Deep merge into existing object (mutates the target)
const target = { a: 1 };
deepMergeInfo(target, { b: 2 }, { c: 3 }); // target is now { a: 1, b: 2, c: 3 }

// Flatten and compact arrays (removes null/undefined, flattens nested arrays)
compactFlatten([1, null, [2, undefined, [3, 4]], 5]); // [1, 2, 3, 4, 5]

// Efficient object key checks
objectHasKeys({}); // false
objectHasKeys({ a: 1 }); // true
objectKeyCount({ a: 1, b: 2 }); // 2

const data = { a: 1, b: null, c: { d: null, e: 2 } };
const arrayData = [1, 2, null, undefined, { b: null }];

deepStripNulls(data); // { a: 1, c: { e: 2 } }
deepStripNullish(arrayData); // [1, 2, {}]
stripNulls(arrayData); // [1, 2, undefined, {b: null}]
stripNullish(data); // { a: 1, c: { d: null, e: 2 } }

职能概览

对象合并

  • merge(...objects) ——合并对象列表. 列表中的后期对象优先.

    • 数值: 替换现有值(使用) null 改为“删除”一个值.
    • 未定义的值:被忽略和剥去(不覆盖或出现在结果中).
  • mergeInto(...objects) - 与 merge 但变异第一个对象,而不是创建一个新的对象.

    • 业绩: 当想要合并到已有对象时,效率更高.
    • 回返:已变异 into 对象.

合并在功能上没有优化 - 即如果合并( a, b) 深等分 a, 结果仍将是一个新对象

对象深度合并

和合并一样,除非遇到平面对象或阵列,否则递归合并.

一般原则:当深度(a,b):

  • 直觉地: “b”是想要的值,“a”是默认值

  • b 未定义 : "a"归来

  • b 无效数字 : null 返回; 将此用作“ b” 逻辑删除“ a” 中的元素的方法

  • a和b 是阵列:按对向索引合并。 “ b. 长度” 用于输出长度

  • a和b为普通对象: 匹配密钥时合并; 输出将同时设置 Object. key(a) 和 Object. key(b)

  • 否则,a和b是不同的类型: b 为返回

  • deepMerge(...objects) ——递归地将嵌入式对象和阵列合并. 以后的对象优先.

  • deepMergeInfo(into, ...objects) - 与 deepMerge 但变异第一个对象,而不是创建一个新的对象.

    • 业绩: 当想要合并到已有对象时,效率更高.
    • 回返:已变异 into 对象.

DeepMorge在功能上没有被优化——即如果 deepMorge(a,b) deep-equality a,结果仍将是一个新对象.

阵列公用事业

  • compactFlatten(array) - 递归平地嵌入阵列并去除所有 null编号 :undefined 数值.
  • compact(array) - 全部删除 null编号 :undefined 来自(可能嵌入的)数组的值.
  • flatten(array) ——递归平地将嵌入式阵列成单数组.

这些职能的职能优化(见下文)

对象密钥工具

  • objectHasKeys(obj) - 回返 true 如果该物体至少有一个自有财产, false 否则。 (比 Object.keys(obj).length > 0(中文(简体) )
  • objectKeyCount(obj) ——返回对象上自有属性的数量. (比 Object.keys(obj).length(中文(简体) )

裸体剥离公用事业

  • deepStripNulls(data) - 递归带 null 从一个对象的所有属性和一个数组/数组的元素。 保存原始物的类型,功能,日期,RegExps.
  • deepStripNullish(data) - 递归带 null 财务报告和审定财务报表 undefined 从一个对象的所有属性和一个数组/数组的元素。 保存原始物的类型,功能,日期,RegExps.
  • stripNulls(data) - 浅色条纹 null 从一个对象的所有属性和一个数组/数组的元素。 不重现为嵌入式对象或阵列.
  • stripNullish(data) - 浅色条纹 null 财务报告和审定财务报表 undefined 从一个对象的所有属性和一个数组/数组的元素。 不重现为嵌入式对象或阵列.

Null(ish) 剥离功能未优化

API 文档参考

关于所有被输出功能及其参数的详细信息,请参见源代码内的TypeScript打字和JSDoc评论.

功能优化( 进行中的工作)

并非所有功能尚未在功能上优化:

  • 功能优化: 如果返回的值在结构上与通过值完全相同,则应在不创建任何新对象或数组的情况下返回通过值。 这样做更有效率,还可以快速检查是否有变化.

目标是让所有这些功能都这样运作,但现在只有紧凑,平坦和紧凑的Flatten功能这样运作.

版本与发布记录

@art-suite/art-core-ts-containers 共发布 34 个版本,首次发布于 2025/05/12;过去 12 个月发布了 7 个版本。

版本发布日期距今
1.0.1latest2026/06/194 个月前
1.0.02026/03/297 个月前
0.11.02026/03/277 个月前
0.10.02026/03/237 个月前
0.9.92025/12/0511 个月前
0.9.82025/12/0511 个月前

关于 @art-suite/art-core-ts-containers 的常见问题

@art-suite/art-core-ts-containers 是什么?

TypeScript 字符串工具库

如何安装 @art-suite/art-core-ts-containers?

在项目目录运行 npm install @art-suite/art-core-ts-containers,或使用 pnpm add / yarn add / bun add。

@art-suite/art-core-ts-containers 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@art-suite/art-core-ts-containers 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@art-suite/art-core-ts-containers 可以商用吗?

@art-suite/art-core-ts-containers 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@art-suite/art-core-ts-containers 的下载量有多少?

根据 npm 官方下载统计,@art-suite/art-core-ts-containers 在 2026/10/07 – 2026/11/05 这 30 天内被下载 3,230 次,日均约 108 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@art-suite/art-core-ts-containers 还在维护吗?

最新版本 1.0.1 发布于 2026/06/19(4 个月前);至今共发布 34 个版本,其中过去 12 个月发布了 7 个;首次发布于 2025/05/12。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。