修改对象数组-javascript

修改对象数组-javascript,javascript,Javascript,我有一个这样的对象数组 [ {KEY1: "VALUE1", NAME: "VALUE2", PID: "VALUE36"} {KEY11: "VALUE1", NAME: "VALUE2", PID: "VALUE47"} {KEY11: "VALUE1", NAME: "VALUE4", PID: "VALUE49"} {KEY11: "VALUE1", NAME: "VALUE4", PID: "VALUE43"} ] 我需要这样的数据结构。因此,基本上,

我有一个这样的对象数组

[
    {KEY1: "VALUE1", NAME: "VALUE2", PID: "VALUE36"}
    {KEY11: "VALUE1", NAME: "VALUE2", PID: "VALUE47"}
    {KEY11: "VALUE1", NAME: "VALUE4", PID: "VALUE49"}
    {KEY11: "VALUE1", NAME: "VALUE4", PID: "VALUE43"}
]
我需要这样的数据结构。因此,基本上,具有重复名称的密钥名将成为新数据结构中的密钥。键PID将是其在数组中的值

[
   { VALUE2: [VALUE36, VALUE47] },
   { VALUE4: [VALUE49, VALUE43] },
]
输出:

[ VALUE2: [ 'VALUE36', 'VALUE47' ], VALUE4: [ 'VALUE49', 'VALUE43' ] ]

这样的聚合可以由处理。例如:

常数arr=[ {KEY1:VALUE1,NAME:VALUE2,PID:VALUE36}, {KEY11:VALUE1,NAME:VALUE2,PID:VALUE47}, {KEY11:VALUE1,NAME:VALUE4,PID:VALUE49}, {KEY11:VALUE1,NAME:VALUE4,PID:VALUE43}, ] //对象在JS中基本上是关联数组,所以。。。 //对于arr中的每个项目,在obj[item.NAME]处添加或更新一个数组 const obj=arr.reduceobj,item=>{ const val=[item.PID] obj[item.NAME]=Array.isArrayobj[item.NAME] ?obj[项目名称].concatval :val 返回obj },{}//以obj={}开头 /* 在这一点上,我们有 obj={ 价值2:[ 价值36, 价值47 ], 价值4:[ 价值49, 价值43 ] } */ //…但由于您指定了单独的对象,这将结束它 const newArr=Object.entriesobj.map[key,val]=>{[key]:val}
console.lognewarr您尝试过什么,它到底有什么问题?您的问题是什么?@jornsharpe modified…同样的问题您试图解决这个问题的代码在哪里?我个人通过反复尝试和尝试回答StackOverflow问题来学习,但MDN通常是一个很好的资源。也许从这里开始:?
[ VALUE2: [ 'VALUE36', 'VALUE47' ], VALUE4: [ 'VALUE49', 'VALUE43' ] ]