【问题标题】:grouping the array object in array using javascript使用javascript将数组对象分组到数组中
【发布时间】: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


【解决方案1】:

看来简单的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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-30
    • 2020-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-28
    相关资源
    最近更新 更多