猿问

用唯一值填充数组

我认为这里的问题非常基本,但我找不到答案 - 我有一堆数组,我想从中提取唯一值。每个数组都有一个候选人精通的技能列表,我想构建一个数组,列出已列出的所有技能。


这是我的代码,其中列出了一个人的名字和他们拥有的技能:


const people = [

  { name: "Mike", skills: ["JavaScript", "Java", "Python"] },

  { name: "Bob", skills: ["Python", "Java"] },

];

我想要做的是构建一个数组,上面列出的每个技能只出现一次,无论它在上面的数组中出现多少次。我尝试使用 Set 功能如下:


let options = [...new Set(people)]

但这对我来说没什么用。理想情况下,我希望输出类似于:


options["JavaScript", "Java", "Python"]

其中每个唯一值仅表示一次。任何帮助表示赞赏。


一只甜甜圈
浏览 187回答 3
3回答

一只名叫tom的猫

将所有技能组合到一个数组中Array.flatMap(),转换为 Set 以仅获取唯一值,然后传播回数组:const people = [  { name: "Mike", skills: ["JavaScript", "Java", "Python"] },  { name: "Bob", skills: ["Python", "Java"] },];const skills = [...new Set(people.flatMap(o => o.skills))];console.log(skills);

弑天下

比它需要的更冗长,但是:for (let individual of people) {&nbsp; for (let skill of individual.skills) {&nbsp; &nbsp; options.indexOf(skill) < 0 ? options.push(skill) : '';&nbsp; }}能做到这。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答