日期:2014-05-20  浏览次数:21012 次

js数组取重复的数据并分组的问题,搞了两天没搞出来...

有数组lista{"S0-E1","S0-E11","S0-E31"},然后listb就是上面图片描绘的数据。需要把listb里面第二个" - " 符号前的字段跟lista里面字段相同的数据分成一个组,就是lista里面有多少种数据。就把listb分成多少组(条件就是前头 " - "字段相同) 来朋友指导指导
------解决方案--------------------
List<List<String>>listab = new ArrayList<List<String>>();
for(String a:lista){
    listab.add(new ArrayList<String>());
}
for(String b:listb){
for(String a:lista){
int i =0;
if(b.contains(a)){
listab.get(i).add(b);
break;
}
i++;
}
}
    
------解决方案--------------------

var lista = ['S0-E1','S0-E11','S0-E31'];
var listb = ['S0-E1-NA','S0-E1-ST','S0-E11-NA','S0-E11-ST','S0-E31-NA','S0-E31-ST'];
var rs = new Object();
//初始化
for(var i = 0; i < lista.length; i++) {
  rs[lista[i]]=[];
}
//分组
for (var i = 0; i < listb.length; i++) {
  var key = listb[i].substr(0,listb[i].lastIndexOf('-'));
  rs[key].push(listb[i]);
}
//结果输出
for (var key in rs) {
  for(var i = 0; i < rs[key].length; i++) {//rs[key]为每组数据
    alert(rs[key][i]);
  }
}