0
var list = ['1-10','1-20','1-22','2-2','2-3','2-4','3-1','3-5','4-6','5-10'];
/*
如何将上面数组分成5组?
如:1-* 为第一组;
   2-* 为第二组;
   ....
以此类推,求解
*/
caryhgq 3.4k
2017-03-22 提问

查看全部 4 个回答

5

已采纳

题意里分组的共同点在于元素的第一个字符(应该说是连线符前的字符串)相同,所以可以用一个对象(其实就是类似字典的含义),把对应数据组合在一起放到同一个地方去。

var obj = {};
var list = ['1-10','1-20','1-22','2-2','2-3','2-4','3-1','3-5','4-6','5-10'];
list.forEach(function(e){
  var index = e.split('-')[0];
  if(!obj[index]){
    obj[index] = [];
  }
  obj[index].push(e);

})

推广链接