我有两个数组:
const array1 = [
{
pageNum: 3,
name: 'Nine',
},
{
pageNum: 1,
name: 'One',
},
{
pageNum: 1,
name: 'Two',
},
{
pageNum: 3,
name: 'Eleven',
},
{
pageNum: 1,
name: 'Three',
},
{
pageNum: 1,
name: 'Four',
},
];
const array2 = [
{
pageNum: 2,
name: 'Five',
},
{
pageNum: 3,
name: 'Twelve',
},
{
pageNum: 2,
name: 'Six',
},
{
pageNum: 2,
name: 'Seven',
},
{
pageNum: 3,
name: 'Ten',
},
{
pageNum: 2,
name: 'Eight',
},
];
第三个预期数组:
[
{ pageNum: 1, name: 'One' },
{ pageNum: 1, name: 'Two' },
{ pageNum: 1, name: 'Three' },
{ pageNum: 1, name: 'Four' },
{ pageNum: 2, name: 'Eight' }
{ pageNum: 2, name: 'Five' },
{ pageNum: 2, name: 'Six' },
{ pageNum: 2, name: 'Seven' }
{ pageNum: 3, name: 'Twelve' },
{ pageNum: 3, name: 'Eleven' },
{ pageNum: 3, name: 'Ten' },
{ pageNum: 3, name: 'Nine' },
]
不确定我们可以通过缩短对象来做到这一点,这是最好的方法。
在合并两个数组后,我试图使对象值相同的组。
使用javascript实施的最佳方法是什么?
这是我尝试过的:
let mergeArray = array1.concat(array2);
console.log(mergeArray)
let groups = {};
for( var i= 0; i< mergeArray.length; i++){
var groupName = mergeArray[i].group;
var key = Object.values(mergeArray);
if(!groups[groupName]){
groups[groupName] = [];
}
groups[groupName].push(mergeArray[i].pageNum, key);
}
mergeArray = [];
for(let groupName in groups){
// console.log("FRR",groups);
mergeArray.push({ pageNum: groups[groupName]})
}
console.log(mergeArray)
我也尝试了prototype.reduce()函数。请给我最好的方法。
答案 0 :(得分:0)
看来简单的sort
是您问题的解决方案。
const array1 = [{
pageNum: 3,
name: 'Nine',
},
{
pageNum: 1,
name: 'One',
},
{
pageNum: 1,
name: 'Two',
},
{
pageNum: 3,
name: 'Eleven',
},
{
pageNum: 1,
name: 'Three',
},
{
pageNum: 1,
name: 'Four',
},
];
const array2 = [{
pageNum: 2,
name: 'Five',
},
{
pageNum: 3,
name: 'Twelve',
},
{
pageNum: 2,
name: 'Six',
},
{
pageNum: 2,
name: 'Seven',
},
{
pageNum: 3,
name: 'Ten',
},
{
pageNum: 2,
name: 'Eight',
},
];
let mergeArray = array1.concat(array2);
let results = mergeArray.sort(function(a, b){
return a.pageNum - b.pageNum;
});
console.log(results);