Javascript concat和前缀或重命名道具
我有两个数组,我正在浓缩。 但是,通过在每个数组中添加前缀,这些数组都有相同的属性名 数组A(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
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=
并且不知道你想要什么