为了账号安全,请及时绑定邮箱和手机立即绑定

用唯一值填充数组

用唯一值填充数组

一只甜甜圈 2021-06-30 18:43:51
我认为这里的问题非常基本,但我找不到答案 - 我有一堆数组,我想从中提取唯一值。每个数组都有一个候选人精通的技能列表,我想构建一个数组,列出已列出的所有技能。这是我的代码,其中列出了一个人的名字和他们拥有的技能:const people = [  { name: "Mike", skills: ["JavaScript", "Java", "Python"] },  { name: "Bob", skills: ["Python", "Java"] },];我想要做的是构建一个数组,上面列出的每个技能只出现一次,无论它在上面的数组中出现多少次。我尝试使用 Set 功能如下:let options = [...new Set(people)]但这对我来说没什么用。理想情况下,我希望输出类似于:options["JavaScript", "Java", "Python"]其中每个唯一值仅表示一次。任何帮助表示赞赏。
查看完整描述

3 回答

?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

将所有技能组合到一个数组中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);


查看完整回答
反对 回复 2021-07-01
?
弑天下

TA贡献1818条经验 获得超8个赞

比它需要的更冗长,但是:


for (let individual of people) {

  for (let skill of individual.skills) {

    options.indexOf(skill) < 0 ? options.push(skill) : '';

  }

}

能做到这。


查看完整回答
反对 回复 2021-07-01
  • 3 回答
  • 0 关注
  • 186 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信