Javascript concat和前缀或重命名道具

Javascript concat和前缀或重命名道具,javascript,arrays,Javascript,Arrays,我有两个数组,我正在浓缩。 但是,通过在每个数组中添加前缀,这些数组都有相同的属性名 数组A(aData)看起来像 [ { id: 1, title: `title` code: '34x' }, ... ] 数组B(bData)看起来像: [ { id: 1 prop: 3, otherporp: `prop` code: 'hi67' }, ... ] 为了组合数组,我正在执行concat和reduce以仅获得匹配的i

我有两个数组,我正在浓缩。 但是,通过在每个数组中添加前缀,这些数组都有相同的属性名

数组A(
aData
)看起来像

[
  {
   id: 1,
   title: `title`
   code: '34x'
  },
  ...
]
数组B(
bData
)看起来像:

[
  {
   id: 1
   prop: 3,
   otherporp: `prop`
   code: 'hi67'
   },
   ...
]
为了组合数组,我正在执行
concat
reduce
以仅获得匹配的
id

const data: any = aData.concat(bData).reduce((acc, x) => {
          acc[x.id] = Object.assign(acc[x.id] || {}, x);
          return acc;
        }, {});
        return Object.values(data);
但问题是我的
bData
code
道具丢失了


有什么方法可以将
代码
aData
重命名为
aCode
,将
代码
bData
重命名为
bCode

您可以使用更新的键值
aCode
bCode
而不是
code
键,从两个数组中创建一个新数组。然后将这两个数组合并到
id
键上

const arrA=[{id:1,title:`title',code:'34x'}],
arrB=[{id:1,prop:3,otherporp:`prop`,代码:'hi67'}];
const newArrA=arrA.map(({code,…rest})=>({…rest,aCode:code}));
const newArrB=arrB.map(({code,…rest})=>({…rest,bCode:code}))
const merged=Object.values([].concat(newArrA,newArrB).reduce((r,o)=>{
r[o.id]=r[o.id]| | Object.assign({},o);
赋值对象(r[o.id],o);
返回r;
}, {}));

console.log(合并)
您可以使用更新的键值
aCode
bCode
而不是
code
键从两个数组创建新数组。然后将这两个数组合并到
id
键上

const arrA=[{id:1,title:`title',code:'34x'}],
arrB=[{id:1,prop:3,otherporp:`prop`,代码:'hi67'}];
const newArrA=arrA.map(({code,…rest})=>({…rest,aCode:code}));
const newArrB=arrB.map(({code,…rest})=>({…rest,bCode:code}))
const merged=Object.values([].concat(newArrA,newArrB).reduce((r,o)=>{
r[o.id]=r[o.id]| | Object.assign({},o);
赋值对象(r[o.id],o);
返回r;
}, {}));
console.log(合并)
var arrA=[{
id:1,
标题:`title`,
代码:“34x”
}],
arrB=[{
id:1,
道具:3,
otherporp:`prop`,
代码:“hi67”
}];
设newArrA=arrA.map(({
代码,
休息
})=>({…休息,
代码:代码
}));
const newArrB=arrB.map(({
代码,
休息
})=>({…休息,
B代码:代码
}));
结果=newArrA.map(函数(v){
var-ret;
$.each(newArrB,函数(k,v2){
如果(v2.id==v.id){
ret=$.extend({},v2,v);
返回false;
}
});
返回ret;
});
控制台日志(结果)
var arrA=[{
id:1,
标题:`title`,
代码:“34x”
}],
arrB=[{
id:1,
道具:3,
otherporp:`prop`,
代码:“hi67”
}];
设newArrA=arrA.map(({
代码,
休息
})=>({…休息,
代码:代码
}));
const newArrB=arrB.map(({
代码,
休息
})=>({…休息,
B代码:代码
}));
结果=newArrA.map(函数(v){
var-ret;
$.each(newArrB,函数(k,v2){
如果(v2.id==v.id){
ret=$.extend({},v2,v);
返回false;
}
});
返回ret;
});
控制台日志(结果)

混淆了你的代码
常量数据:any=
并且不知道你想要什么影响你的代码
常量数据:any=
并且不知道你想要什么