js二维数组里面的数组,根据某一项值相同就合并

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js二维数组里面的数组,根据某一项值相同就合并相关的知识,希望对你有一定的参考价值。

var da= "success": "1": [ "t": "A4", "c": "2017/7/3" , "t": "A2", "c": "2017/7/3" , "t": "A3", "c": "2017/7/4" , "t": "A1", "c": "2017/7/4" ], "2": [ "t": "B4", "c": "2017/7/3" , "t": "B2", "c": "2017/7/3" , "t": "B3", "c": "2017/7/4" , "t": "B1", "c": "2017/7/4" ], "3": [ "t": "C4", "c": "2017/7/3" , "t": "C2", "c": "2017/7/3" , "t": "C3", "c": "2017/7/4" , "t": "C1", "c": "2017/7/4" ] ;这样一个json数组将日期相同的合成一个数组我自己写的var ass=da.success; var cc = Object.keys(ass); var results = []; for (var i in ass) var objs = ass[i]; for(var j in objs) var obj = objs[j]; if(results[j]===undefined) results[j]=[]; results[j].push(obj.t); for(var a=0;a<results.length;a++) results[a].unshift(getLocalTime(ass[cc[0]][a].c).split(' ')[0]); //results[a].unshift(getLocalTime(ass[cc[0]][a].c)); console.log(results[a][0]);
需要合并重复项,我把json取出来做成我要的数组形式了,但是日期相同的没有合并。我要的是第二张图的样子。现在是2017-7-3, A4,B4,C4 2017-7-3, A2,B2,C2 我想根据这个时间,如果时间是一样的,就合并这个数组变成 2017-7-3, A4,B4,C4, A2,B2,C2 这样的。二维数组的形式表达是从这样的[[2017-7-3,A4,B4,C4],[2017-7-3,A2,B2,C2]]变成这样的[[2017-7-3,A4,B4,C4, A2,B2,C2]]

var da="success": "1": ["t":"A4","c":"2017/7/3", "t":"A2","c":"2017/7/3", "t":"A3","c":"2017/7/4", "t":"A1","c":"2017/7/4"], "2": ["t":"B4","c":"2017/7/3", "t":"B2","c":"2017/7/3", "t":"B3","c":"2017/7/4", "t":"B1","c":"2017/7/4"], "3": ["t":"C4","c":"2017/7/3", "t":"C2","c":"2017/7/3", "t":"C3","c":"2017/7/4", "t":"C1","c":"2017/7/4"]  ;

var timesmap = ;

for(var box0 in da.success)
    for(var box1 of da.success[box0]) 
        if(!timesmap[box1.c])
            timesmap[box1.c] = [];
        timesmap[box1.c].push(box1.t);
    
    
var ret = [];

for(var time in timesmap) 
    var item = [time];
    for(var box0 of timesmap[time])
        item.push(box0);
    ret.push(item);


console.log(ret)

写好了,你看看。

追问

我要的是A1,B1,C1,A2,B2,C2的形式的 你的是 A1,A2,B1,B2,C1,C2

追答for(var time in timesmap) 
    timesmap[time].sort(function(a,b)
        a = a.split("").reverse().join("");
        b = b.split("").reverse().join("");
        return a>b? 1:-1;
    );

    ret.push(([time]).concat(timesmap[time]));

最后一段改成这样就可以了。

追问

格式是我要的,但是还有个问题,就是 如果我的其中有一条没有值

,空格的那一条会跑到第一格的位置。正常 应该是A2,B2,空格

参考技术A

不太理解你的需求,能说的更清楚一点吗变成啥样的?

追问

现在是2017-7-3, A4,B4,C4 2017-7-3, A2,B2,C2 我想根据这个时间,如果时间是一样的,就合并这个数组变成 2017-7-3, A4,B4,C4, A2,B2,C2 这样的。二维数组的形式表达是从这样的[[2017-7-3,A4,B4,C4],[2017-7-3,A2,B2,C2]]变成这样的[[2017-7-3,A4,B4,C4, A2,B2,C2]]

参考技术B for(vari=,n;n=arr[i];i++)console.log(n.ti追问

怎么只有一小部分,而且还有错误

php数组根据某键值,把相同键值的合并最终生成一个新的二维数组

$infos = array(    
    array(
        ‘gid‘ => 36,
        ‘name‘ => ‘高二佳木斯‘,         
        ‘start_time‘ => ‘2015-08-28 00:00:00‘,           
        ‘pic‘ => ‘2015/08/438488a00b3219929282e3652061c2e3.png‘                   
    ),    
    array(          
        ‘gid‘ => 36,
        ‘name‘ => ‘高二佳木斯‘,    
        ‘start_time‘ => ‘2015-08-20 00:00:00‘,            
        ‘pic‘ => ‘2015/08/438488a00b3219929282e3652061c2e3.png‘    
    ),   
    array(           
        ‘gid‘ => 36,
        ‘name‘ => ‘高二佳木斯‘,        
        ‘start_time‘ => ‘2015-08-28 00:00:00‘,  
        ‘pic‘ => ‘2015/08/438488a00b3219929282e3652061c2e3.png‘     
    ),    
    array(          
        ‘gid‘ => 36,
        ‘name‘ => ‘高二佳木斯‘,        
        ‘start_time‘ => ‘2015-08-27 00:00:00‘,  
        ‘pic‘ => ‘2015/08/438488a00b3219929282e3652061c2e3.png‘    
    ),   
    array(           
        ‘gid‘ => 18,           
        ‘name‘ => ‘天书‘,          
        ‘start_time‘ => ‘2015-08-24 00:00:00‘,           
        ‘pic‘ => ‘dev/2015/08/438488a00b3219929282e3652061c2e3.png‘       
    ),   
    array(         
        ‘gid‘ => 17,           
        ‘name‘ => ‘晒黑西游‘,          
        ‘start_time‘ => ‘2015-08-06 00:00:00‘,       
        ‘pic‘ => ‘‘
    )    
    array(           
       ‘gid‘ => 17,           
       ‘name‘ => ‘晒黑西游‘,           
       ‘start_time‘ => ‘2015-08-24 00:00:00‘,         
       ‘pic‘ => 
    )
);
$result= array();
foreach ($infos as $key => $info) {
    $result[$info[‘gid‘]][] = $info;
} 
print_r($result);
Array(  
  [36] => Array(            
      [0] => Array(                   
          [gid] => 36                   
          [name] => 高二佳木斯            
          [start_time] => 2015-08-28 00:00:00        
          [pic] => dev/2015/08/438488a00b3219929282e3652061c2e3.png                
      )            
     [1] => Array(
          [gid] => 36 
          [name] => 高二佳木斯                   
          [start_time] => 2015-08-20 00:00:00              
          [pic] => dev/2015/08/438488a00b3219929282e3652061c2e3.png                
      )           
      [2] => Arra(                    
          [gid] => 36                   
          [name] => 高二佳木斯               
          [start_time] => 2015-08-28 00:00:00           
          [pic] => dev/2015/08/438488a00b3219929282e3652061c2e3.png               
      )          
      [3] => Array(                    
          [gid] => 36                  
          [name] => 高二佳木斯               
          [start_time] => 2015-08-27 00:00:00           
          [pic] => dev/2015/08/438488a00b3219929282e3652061c2e3.png               
      ) 
  )   
  [18] => Array(            
      [0] => Array(                   
          [gid] => 18               
          [name] => 天书             
          [start_time] => 2015-08-24 00:00:00    
          [pic] => dev/2015/08/438488a00b3219929282e3652061c2e3.png                
      )               
  )        
  [17] => Array(            
      [0] => Arra(                 
          [gid] => 17           
          [name] => 晒黑西游      
          [start_time] => 2015-08-06 00:00:00        
          [pic] => 
      )            
     [1] => Array(            
         [gid] => 17       
         [name] => 晒黑西游       
         [start_time] => 2015-08-24 00:00:00            
         [pic] => 
     )        
  )
);

 

以上是关于js二维数组里面的数组,根据某一项值相同就合并的主要内容,如果未能解决你的问题,请参考以下文章

php根据二维数组的某一项对数组进行排序

js 判断数组里面的对象是不是有id相同(某一项),相同就过滤只留下一项

js中一个二维数组怎么判断某一固定列中是不是存在某值,要最优算法?

php数组实现根据某个键值将相同键值合并生成新二维数组的方法

php数组实现根据某个键值将相同键值合并生成新二维数组的方法

js中怎么把值放入数组中