javascript - 如何从对象元素中获取没有重复的数组

标签 javascript arrays object

我有一个带组的对象(例如)。每个组对象包含一个 header id 和多个 trigger身份证件。
我想获得所有组的所有触发器的数组,没有重复。
一个例子是这样的:

const groups = {
  group1: { header: 9, trigger: [10,11] },
  group2: { header: 15, trigger: [11, 17] }
}
目前,我是这样做的:
const triggers = Array.from(groups, x => x.trigger);
这给了我以下结果:[[10,11],[11,17]]我的计划是得到这样的东西:[10,11,17] .不必对它们进行排序,但必须删除重复项(在本例中为 11 )。有什么快速的方法吗?否则我现在会遍历这个数组,然后连接到一个新数组,但我认为有一个更快更好的解决方案。

最佳答案

这是一个单行使用 Set .flatMap() 方法

const groups = {
  group1: { header: 9, trigger: [10,11] },
  group2: { header: 15, trigger: [11, 17] }
}
const triggers = [...new Set(Object.values(groups).flatMap(x=>x.trigger))]

console.log(triggers)

关于javascript - 如何从对象元素中获取没有重复的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62580075/

相关文章:

javascript - 从动态文本区域获取值(value)

javascript - 检查时对象未从我的数组中删除

javascript - 为什么 (23 == true) 为假而 (!!23 == true) 为真?毕竟有===可以精确比较

javascript - 示例中 .src 和 .alt 的作用是什么?

c++ - 如何优化这个?指向数组的指针

javascript - 使用 PHP 从动态输入字段中捕获数组值并通过电子邮件发送

java - 对象序列化后,引用是保留还是创建新对象?

java 用于数组

既不是方法也不是静态的 PHP 类函数

Java - 如何使非字符串对象的 JComboBox 显示字符串名称?