使用键/代码转换JavaScript数组

使用键/代码转换JavaScript数组,javascript,Javascript,我需要一个可以在JavaScript中将数组a转换为数组B的函数的帮助 数组A: [ { id: 'U125H069G', code: 'C13LKL4V6' }, { id: 'U13MPMLA3', code: 'C13LKL4V6' }, { id: 'U125H069G', code: 'C125H083C' }, { id: 'U13MPMLA3', code: 'C125H083C' }, { id: 'U125H069G', code: 'C123Q00D9' },

我需要一个可以在JavaScript中将数组a转换为数组B的函数的帮助

数组A:

[ { id: 'U125H069G', code: 'C13LKL4V6' },
  { id: 'U13MPMLA3', code: 'C13LKL4V6' },
  { id: 'U125H069G', code: 'C125H083C' },
  { id: 'U13MPMLA3', code: 'C125H083C' },
  { id: 'U125H069G', code: 'C123Q00D9' },
  { id: 'U13MPMLA3', code: 'C123Q00D9' },
  { id: 'U125H069G', code: 'C13LM1VUP' } ]
数组B:

[{'id':'U125H069G', codes: ['C13LKL4V6','C125H083C','C123Q00D9', 'C13LM1VUP]},
  {'id':'U13MPMLA3': codes: ['C13LKL4V6','C125H083C','C123Q00D9']}]

您设计的对象应该是

{'id':'U125H069G', codes: ['C13LKL4V6','C125H083C','C123Q00D9', 'C13LM1VUP']}
而不是

{'id':'U125H069G', codes: {'C13LKL4V6','C125H083C','C123Q00D9', 'C13LM1VUP'}}
像这样试试

var temp = [];

data.forEach(function(x) {
  if (temp.map(function(y) {
      return y.id
    }).indexOf(x.id) < 0) {
    var codes = data.filter(function(z) {
      return z.id == x.id;
    }).map(function(z) {
      return z.code;
    });
    temp.push({
      id: x.id,
      codes: codes
    });
  }
})

console.log(temp);
var-temp=[];
data.forEach(函数(x){
if(温度映射)功能(y){
返回y.id
}).indexOf(x.id)<0{
var代码=数据过滤器(函数(z){
返回z.id==x.id;
}).map(函数(z){
返回z代码;
});
临时推力({
id:x.id,
代码:代码
});
}
})
控制台日志(temp);

通过forEach运行它,并将唯一ID存储在对象映射中

var输入=[
{id:'U125H069G',代码:'C13LKL4V6'},
{id:'U13MPMLA3',代码:'C13LKL4V6'},
{id:'U125H069G',代码:'C125H083C'},
{id:'U13MPMLA3',代码:'C125H083C'},
{id:'U125H069G',代码:'C123Q00D9'},
{id:'U13MPMLA3',代码:'C123Q00D9'},
{id:'U125H069G',代码:'C13LM1VUP'}
];
var idMap={};
var输出=[];
input.forEach(函数(值、索引、arr){
如果(!idMap[value.id]){
idMap[value.id]={id:value.id,代码:[value.code]};
push(idMap[value.id]);
}
否则{
idMap[value.id].code.push(value.code);
}  
}); 
控制台日志(输出);
document.getElementById(“输出”).innerHTML=JSON.stringify(输出);
/*[{'id':'U125H069G',代码:{'C13LKL4V6','C125H083C','C123Q00D9','C13LM1VUP},
{'id':'U13MPMLA3':代码:{'C13LKL4V6'、'C125H083C'、'C123Q00D9'}]
*/

基本上只需循环遍历它们,在找到新id时向B添加一个对象,或者如果id已经存在,则向代码数组添加一个条目

var A=[{id:'U125H069G',代码:'C13LKL4V6'},
{id:'U13MPMLA3',代码:'C13LKL4V6'},
{id:'U125H069G',代码:'C125H083C'},
{id:'U13MPMLA3',代码:'C125H083C'},
{id:'U125H069G',代码:'C123Q00D9'},
{id:'U13MPMLA3',代码:'C123Q00D9'},
{id:'U125H069G',代码:'C13LM1VUP'}];
B=[];
A.forEach(函数(va){
if(!B.some)函数(vb,i){
如果(vb.id==va.id){
B[i].code.push(va.code);
返回true;
}
})){
B.push({id:va.id,代码:[va.code]})
}
});
//展示

document.body.appendChild(document.createTextNode(JSON.stringify(B))这是一种基本但乏味的编程练习。你是否至少尝试过自己有困难的事情?也许如果你把你目前拥有的东西贴出来,有人会愿意帮助你,而不是全力以赴地为你做所有的工作。