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

将对象数组与公共值组合在一起,并为每个对象返回一个键和值

将对象数组与公共值组合在一起,并为每个对象返回一个键和值

慕森王 2022-08-27 09:21:01
 [{id: 68, name: "IT"}{id: 67, name: "IT"}{id: 66, name: "Supply chain"}{id: 65, name: "Manufacturing Engineering"}{id: 64, name: "Sales & Marketing"}{id: 63, name: "Research and Development"}{id: 62, name: "Research and Development"}{id: 61, name: "Research and Development"}] 请采取任何手段来实现这一点?.我想通过它来选择选项来获取相应的ID和名称[ {1: IT2: Supply Chain,3: Research and Development}]
查看完整描述

3 回答

?
汪汪一只猫

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

因此,以下内容为您提供了所需的输出,但我怀疑还有其他因素可能没有考虑在内(例如,维护ID,排序等)。


鉴于:


const input = [

    {id: 68, name: "IT"},

    {id: 67, name: "IT"},

    {id: 66, name: "Supply chain"},

    {id: 65, name: "Manufacturing Engineering"},

    {id: 64, name: "Sales & Marketing"},

    {id: 63, name: "Research and Development"},

    {id: 62, name: "Research and Development"},

    {id: 61, name: "Research and Development"},

];

我们可以:


const output = [...new Set(

    // Get a unique set of department names

    input.map(i => i.name)

)].map(

    // With the new set of department names

    // Reconstruct the list with id values starting at 1 instead of 0

    (dept, idx) => ({

        id: idx + 1,

        name: dept,

    })

);


查看完整回答
反对 回复 2022-08-27
?
不负相思意

TA贡献1777条经验 获得超10个赞

后来,您可以利用首先过滤掉重复值,然后相应地映射它。以下是操作方法:Map


var data = [{id: 68, name: "IT"},{id: 67, name: "IT"},{id: 66, name: "Supply chain"},{id: 65, name: "Manufacturing Engineering"},{id: 64, name: "Sales & Marketing"},{id: 63, name: "Research and Development"},{id: 62, name: "Research and Development"},{id: 61, name: "Research and Development"}];


var result1 = [...new Map(data.map(val=>[val.name, val])).values()];

var result2 = [...new Map(data.map(val=>[val.name, val])).values()].map(({id, name},i)=>({id:i+1, name}));


console.log(result1)

console.log(result2);


查看完整回答
反对 回复 2022-08-27
?
暮色呼如

TA贡献1853条经验 获得超9个赞

如果您使用 rxjs,则可以使用此解决方案。


  this.data = [...] // array


  from(this.data)

    .pipe(

      distinct(data => data.name),

      map(data => data.name),

      toArray(),

      map(names => ({...names}))

    ).subscribe(

      console.log

    );


查看完整回答
反对 回复 2022-08-27
  • 3 回答
  • 0 关注
  • 58 浏览
慕课专栏
更多

添加回答

举报

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