JavaScript 将数组中具有相同值的对象 取出组成新的数组

 1 var arr=[{name:2,id:3},{name:2,id:4},{name:3,id:5},{name:3,id:6},{name:1,id:1},{name:1,id:2}];
 2 
 3 // 传入一个数组
 4 // 按照特定方式格式化
 5 function sortArr(arr, str) {
 6     var _arr = [],
 7         _t = [],
 8         // 临时的变量
 9         _tmp;
10 
11     // 按照特定的参数将数组排序将具有相同值得排在一起
12     arr = arr.sort(function(a, b) {
13         var s = a[str],
14             t = b[str];
15 
16         return s < t ? -1 : 1;
17     });
18 
19     if ( arr.length ){
20         _tmp = arr[0][str];
21     }
22     // console.log( arr );
23     // 将相同类别的对象添加到统一个数组
24     for (var i in arr) {
25         console.log( _tmp);
26         if ( arr[i][str] === _tmp ){
27             console.log(_tmp)
28             _t.push( arr[i] );
29         } else {
30             _tmp = arr[i][str];
31             _arr.push( _t );
32             _t = [arr[i]];
33         }
34     }
35     // 将最后的内容推出新数组
36     _arr.push( _t );
37     return _arr;
38 }
39 
40 sortArr( arr, 'name');