【发布时间】:2019-01-09 12:29:51
【问题描述】:
我有两个数组:
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() 函数。请给我最好的方法。
【问题讨论】:
-
请展示你迄今为止的尝试。另外,有点不清楚您要做什么。 “制作一组相同的对象值”。展示您的尝试可能会使您的问题更加清晰。
-
请在您的帖子中添加第三个数组,其中包含结果应该是什么样子的草图。
-
结果数组 = [ { pageNum: 1, name: 'One' }, { pageNum: 1, name: 'Two' }, { pageNum: 1, name: 'Three' }, { pageNum :1,名称:'四'},{ pageNum:2,名称:'八'} { pageNum:2,名称:'五'},{ pageNum:2,名称:'六'},{ pageNum:2, name: 'Seven' } { pageNum: 3, name: 'Twelve' }, { pageNum: 3, name: 'Eleven' }, { pageNum: 3, name: 'Ten' }, { pageNum: 3, name: '九' }, ]
-
那不是组,那只是排序
-
如果您正在寻找的只是排序,那么:w3schools.com/js/js_array_sort.asp
标签: javascript jquery ecmascript-6