如何解决动态合并不同数组中的所有对象添加名称而不是忽略
我要结合两个具有共同属性的数组:
var ranking = [{
def: "0.58",league: "Scottish Premiership",name: "Celtic",off: "3.33",grank: "3",tform: "96.33",},{
def: "2.52",name: "Dundee",off: "1.28",grank: "302",tform: "27.51",}]
var matches = [{
date: "2010-04-22",home: "0.0676",away: "0.8",draw: "0.1324",goals1: "3",goals2: "1",tform1: "96.33",tform2: "27.51",team1: "Celtic",team2: "Dundee",}]
预期输出如下:
[{
date: "2010-04-22",def1: "0.58",def2: "2.52",off1: "3.33",off2: "1.28",grank1: "3",grank2: "302",}]
要合并数组,我使用了Lodash _.merge函数
var result = _.merge(ranking,matches);
返回的输出确实合并了一些对象,并省略了同类对象。
在完成这项任务时,我需要一些见识。
解决方法
创建一个函数以提取独特的道具并在所需的每个对象列表上调用它。
var ranking = [{
def: "0.58",league: "Scottish Premiership",name: "Celtic",off: "3.33",grank: "3",tform: "96.33",},{
def: "2.52",name: "Dundee",off: "1.28",grank: "302",tform: "27.51",}
]
var matches = [{
date: "2010-04-22",home: "0.0676",away: "0.8",draw: "0.1324",goals1: "3",goals2: "1",tform1: "96.33",tform2: "27.51",team1: "Celtic",team2: "Dundee",}]
function extractUniqueProps(arr) {
return arr.reduce((acc,x,i) => {
keys = Object.keys(x);
keyValue = keys.map((y,j) => ({
[y + i]: x[y]
})).reduce((acc2,y) => ({
...acc2,...y
}),{})
acc = {
...acc,...keyValue
}
return acc;
},{}
)
}
const result = { ...extractUniqueProps(ranking),...extractUniqueProps(matches)
}
console.log(result)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。