javascript - 从对象数组中收集键并将其缩减为单个数组并删除重复项

标签 javascript arrays

我正在尝试提取数组中每个对象的键,然后我将收集所有键,然后连接小块键数组。然后我使用 set 来消除重复项并获取所有 key 。

我能够得到结果。有没有更好的方法呢

感谢任何帮助

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)

关于javascript - 从对象数组中收集键并将其缩减为单个数组并删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56275114/

相关文章:

javascript - 如何根据输入字段动态更改网页内容

javascript - className 下有两个类的元素

c++ - 为什么当我取消引用数组指针时,结果值是指向数组第一个元素的指针,而不是整个数组对象?

arrays - 通过数组删除变量

javascript - 处理数组时使用扩展语法 (...) 和 push.apply 之间的区别

java - 按值和索引搜索数组

javascript - Internet Explorer - 检查权限是否被拒绝

php - 如何使用 jquery 将文本框值存储在数组中?

java - 将 Java 数组映射到 Frege

javascript - 使用 Angular 指令初始化多个 jQuery 插件