【问题标题】:JS - How do I push multiple Sets into a single Array? [duplicate]JS - 如何将多个集合推送到一个数组中? [复制]
【发布时间】:2021-08-25 05:12:56
【问题描述】:

我最近在 ES6 中发现了“Set”数据类型。爱它至今。我正在研究由多个选项组成的自动选择,但我不想显示重复项。这就是我使用 Set-Datatype 的原因。

例如:

我有这个数组上传

const uploads = [
 {projectNr: PUE-200, projectDesc: "This is project 200"},
 {projectNr: PUE-200, projectDesc: "This is project 200"},
 {projectNr: PUE-201, projectDesc: "This is project 201"},
 {projectNr: PUE-201, projectDesc: "This is project 201"},
 {projectNr: PUE-202, projectDesc: "This is project 202"}
]

我的自动选择器需要一个数组,该数组由每个项目的一个实例组成,但没有重复项。我设法检索到这样的项目编号(PUE-200、PUE-201、PUE-202 等),但我还需要描述。我的方法是将项目拆分为多个集合。一个用于项目编号,另一个用于描述。两套都是完整的,但现在我需要将它们放在一个数组中。我尝试使用扩展运算符,它有点工作,但我需要两个值作为数组元素的实际值才能映射它。

我现在的情况:

 ["PUE-200", "This is project 200", "PUE-201", "This is project 201"]

我需要什么:

 [
  {ProjektNr:"PUE-200", ProjektDesc: "This is project 200",
  {ProjektNr:"PUE-201", ProjektDesc: "This is project 201""}
 ]

编辑:这是我当前的代码:

const uniqueProjektNr = new Set();
const uniqueProjektBeschreibung = new Set();

uploads.map((upload) => {
    uniqueProjektNr.add(upload.ProjektNr);
    uniqueProjektBeschreibung.add(upload.ProjektBeschreibung);
  });

let uniqueProjektHolder = [...uniqueProjektNr, ...uniqueProjektBeschreibung];

【问题讨论】:

  • 我知道可以做什么,但如果没有您的实际尝试Minimal, Complete, and Reproducible Code Example,这可能是无关紧要的。请更新您的问题以包含您尝试过的一些代码。
  • 此答案中的最后一个 sn-p:stackoverflow.com/a/18773857/3082296
  • @adiga 我认为这是不同的,我认为 OP 想从本质上合并两个数组。
  • @DrewReese 用代码更新了我的问题,提供任何帮助
  • @adiga 不,我需要将两个集合集合合并到一个数组中

标签: javascript arrays reactjs ecmascript-6 set


【解决方案1】:

const uploads = [
 {projectNr: 'PUE-200', projectDesc: "This is project 200"},
 {projectNr: 'PUE-200', projectDesc: "This is project 200"},
 {projectNr: 'PUE-201', projectDesc: "This is project 201"},
 {projectNr: 'PUE-201', projectDesc: "This is project 201"},
 {projectNr: 'PUE-202', projectDesc: "This is project 202"}
]

const output = uploads.reduce((distinctOptions, option) => {
  const isDuplicate = distinctOptions.some(newOption => option.projectNr === newOption.projectNr && option.projectDesc === newOption.projectDesc)
  if(!isDuplicate){
      distinctOptions.push(option)
  }
  return distinctOptions
} ,[])

console.log(output)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-20
    • 1970-01-01
    • 2016-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-30
    • 1970-01-01
    相关资源
    最近更新 更多