我想组合两个具有共同属性的数组:
var ranking = [{
def: "0.58",
league: "Scottish Premiership",
name: "Celtic",
off: "3.33",
grank: "3",
tform: "96.33",
},
{
def: "2.52",
league: "Scottish Premiership",
name: "Dundee",
off: "1.28",
grank: "302",
tform: "27.51",
}]
var matches = [{
date: "2010-04-22",
league: "Scottish Premiership",
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",
league: "Scottish Premiership",
home: "0.0676",
away: "0.8",
draw: "0.1324",
goals1: "3",
goals2: "1",
tform1: "96.33",
tform2: "27.51",
def1: "0.58",
def2: "2.52",
off1: "3.33",
off2: "1.28",
grank1: "3",
grank2: "302",
team1: "Celtic",
team2: "Dundee",}]
为了合并数组,我使用了 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",
league: "Scottish Premiership",
name: "Dundee",
off: "1.28",
grank: "302",
tform: "27.51",
}
]
var matches = [{
date: "2010-04-22",
league: "Scottish Premiership",
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)