我认为这里的问题非常基本,但我找不到答案 - 我有一堆数组,我想从中提取唯一值。每个数组都有一个候选人精通的技能列表,我想构建一个数组,列出已列出的所有技能。这是我的代码,其中列出了一个人的名字和他们拥有的技能: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);
弑天下
TA贡献1818条经验 获得超8个赞
比它需要的更冗长,但是:
for (let individual of people) {
for (let skill of individual.skills) {
options.indexOf(skill) < 0 ? options.push(skill) : '';
}
}
能做到这。
添加回答
举报
0/150
提交
取消