javascript - 从对象数组中收集键并将其减少为单个数组并删除重复项
问题描述
我正在尝试提取数组中每个对象的键,然后我将收集所有键,然后连接小块键数组。然后我使用 set 消除重复并获取所有密钥。
我能够得到结果。有没有更好的方法来解决这个问题
任何帮助表示赞赏
let data = [
{
"test1": "123",
"test2": "12345",
"test3": "123456"
},
{
"test1": "123",
"test2": "12345",
"test3": "123456"
},
{
"test1": "123",
"test2": "12345",
"test3": "123456"
},
{
"test1": "123",
"test2": "12345",
"test3": "123456"
},
{
"test1": "123",
"test2": "12345",
"test3": "123456"
},
]
let keysCollection = []
data.forEach(d => {
let keys = Object.keys(d);
keysCollection.push(keys)
})
let mergingKeysCollection = keysCollection.reduce((a,b) => [...a, ...b], [])
let uniqueKeys = new Set(mergingKeysCollection)
console.log('uniqueKeys', uniqueKeys)
解决方案
您可以直接获取一个集合,而无需使用另一个键数组。
let data = [{ test1: "123", test2: "12345", test3: "123456" }, { test1: "123", test2: "12345", test3: "123456" }, { test1: "123", test2: "12345", test3: "123456" }, { test1: "123", test2: "12345", test3: "123456" }, { test1: "123", test2: "12345", test3: "123456" }],
uniqueKeys = Array.from(
data.reduce((r, o) => Object.keys(o).reduce((s, k) => s.add(k), r), new Set)
);
console.log(uniqueKeys)
推荐阅读
- docker - 我可以在 docker build 期间避免或缓存 `usermod` 和 `chown` 命令吗?
- kubernetes - 监控 k8s pod 的 tcp 连接数
- python - 如何让我的 selenium 代码运行得更快?
- javascript - 销毁并重新初始化引导滑块
- java - 杰克逊:@JsonUnwrapped 自定义字段名称和自定义反序列化模块时无法识别的字段
- amazon-web-services - 是否可以在 AWS 中自动创建 AMI?
- pip - 如何在openSUSE Tumbleweed上安装柯南包管理器最正确?
- python - 将ftr文件读入R
- android - 仅限三星的 IllegalStateException
- octobercms - 在 OctoberCMS 中急切加载关系数据