本文详解如何从键值结构的对象(如 {"100": [295, 681, 15220], "257": [295, 681, 1123]})中提取所有 ID 并自动去重,生成唯一数字数组 [295, 681, 15220, 1123],推荐使用 Object.values() + 展开运算符 + Set 的现代简洁方案。
本文详解如何从键值结构的对象(如 `{"100": [295, 681, 15220], "257": [295, 681, 1123]}`)中提取所有 id 并自动去重,生成唯一数字数组 `[295, 681, 15220, 1123]`,推荐使用 `object.values()` + 展开运算符 + `set` 的现代简洁方案。
在 JavaScript 开发中,常需处理类似 { "key1": [id1, id2], "key2": [id2, id3] } 这样的嵌套结构,并从中提取全局唯一的 ID 列表。核心目标是:扁平化所有子数组 → 去除重复项 → 返回标准数组。
最简洁高效的实现方式如下:
const testobj = {"100": [295, 681, 15220], "257": [295, 681, 1123]};
const uniqueIds = [...new Set([].concat(...Object.values(testobj)))];
console.log(uniqueIds); // [295, 681, 15220, 1123]✅ 代码解析:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- Object.values(testobj) → 获取所有值组成的数组:[[295, 681, 15220], [295, 681, 1123]]
- ...Object.values(testobj) → 展开为独立参数:[295, 681, 15220], [295, 681, 1123]
- [].concat(...) → 合并为单层数组:[295, 681, 15220, 295, 681, 1123]
- new Set(...) → 自动去重(Set 仅保留唯一值)
- [...] → 将 Set 转回数组,保持可读性与兼容性
⚠️ 注意事项:
立即学习“Java免费学习笔记(深入)”;
- 此方法适用于 ID 为原始类型(数字、字符串)的场景;若含对象引用,需改用 filter() + findIndex() 等深度比较逻辑。
- Set 保持插入顺序,因此输出顺序与首次出现位置一致(如 295 和 681 出现在 "100" 中,故排在前)。
- 若需兼容旧版浏览器(如 IE),可替换为 Array.from(new Set(...)) 或使用 reduce + includes 手动去重(但性能较低)。
该方案兼具可读性、性能与现代语法优势,是处理此类嵌套去重问题的推荐实践。

















