【问题标题】:Combining nested arrays into a single array with unique items将嵌套数组组合成具有唯一项的单个数组
【发布时间】:2021-08-03 14:05:04
【问题描述】:

假设我有一个像这样的对象:

 hex_ids = [
    ["8d267451c3858ff", "8d267451c385bbf", "8d267451c385b3f", "8d267451c385b7f", "8d267451c3ae6bf", "8d267451c3ae6ff", "8d267451c3ae67f", "8d267451c3aa93f"], 
    ["8d267451c3aa93f", "8d267451c3ae2ff", "8d267451c3ae27f", "8d267451c3a8cbf", "8d267451c3a8dbf", "8d267451c3a8d3f", "8d267451c3ac6ff"]
 ]

数组有 2 个嵌套数组,每个数组都有不同的长度。每个嵌套数组中的至少一项也存在于另一项中。我想要做的是将这 2 个嵌套数组组合成一个具有唯一项的数组,并消除像这样的任何冗余:

hex_ids = ["8d267451c3858ff", "8d267451c385bbf", "8d267451c385b3f", "8d267451c385b7f",
"8d267451c3ae6bf", "8d267451c3ae6ff", "8d267451c3ae67f", "8d267451c3aa93f", "8d267451c3ae2ff", 
"8d267451c3ae27f", "8d267451c3a8cbf", "8d267451c3a8dbf", "8d267451c3a8d3f", "8d267451c3ac6ff"]

最简单的方法是什么?

【问题讨论】:

  • const newArray = Array.from(new Set(hex_ids.flatMap(item => item)))
  • @secan - 没有理由使用flatMap,我们有flat,避免回调。
  • ... 实际上使用flatMap() 是没有意义的,而简单的flat() 会这样做,正如您在@Spectric 的答案中看到的那样
  • @T.J.Crowder,是的,当我看到 Spectric 的答案时,我意识到了这一点,但无论如何感谢 :)

标签: javascript arrays unique


【解决方案1】:

使用Array#flat 展平数组并获取唯一值:

const array = [
    ["8d267451c3858ff", "8d267451c385bbf", "8d267451c385b3f", "8d267451c385b7f", "8d267451c3ae6bf", "8d267451c3ae6ff", "8d267451c3ae67f", "8d267451c3aa93f"], 
    ["8d267451c3aa93f", "8d267451c3ae2ff", "8d267451c3ae27f", "8d267451c3a8cbf", "8d267451c3a8dbf", "8d267451c3a8d3f", "8d267451c3ac6ff"]
 ]
const result = [...new Set(array.flat())];
console.log(result);

【讨论】:

  • 哇,效果很好!从字面上看是最简单和最干净的解决方案,我不敢相信我以前从未见过 .flat。
【解决方案2】:
var arr=[];

for(let i of hex_ids){
 arr=arr.concat(i)
}
console.log(Array.from(new Set(arr)))

【讨论】:

  • 欢迎来到 StackOverflow!请花一些时间详细说明您的答案,并告诉 OP 和未来的读者,为什么您的特定解决方案有效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-01-26
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
  • 2017-06-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多