Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中按数组中的组排序_Javascript_Arrays_Math - Fatal编程技术网

在javascript中按数组中的组排序

在javascript中按数组中的组排序,javascript,arrays,math,Javascript,Arrays,Math,我想要一个帮助,用javascript命令表中的这些行。解释:我想按顺序和组排序,意思是按顺序排序,但当一个字段有组时,在组内排序。。。我的名单: ID SEQ GROUP NAME 0 0 0 field1 7 1 0 field2 4 2 0 field3 2 3 0 field4 3 4 0 field5 6 5 0

我想要一个帮助,用javascript命令表中的这些行。解释:我想按顺序和组排序,意思是按顺序排序,但当一个字段有组时,在组内排序。。。我的名单:

  ID    SEQ  GROUP  NAME
    0   0    0      field1
    7   1    0      field2
    4   2    0      field3 
    2   3    0      field4 
    3   4    0      field5
    6   5    0      field6
    5   6    0      field7
    1   7    0      field8 
   15   1    2      field9
   12   2    2      field10
   11   3    2      field11
  14   14    10     field12
  18   13    8      field13
  19   14    8      field14
  13   13    10     field15
   8    8    0      field16 
   9    9    0      field17
  10   10    0      field18
  16   11    0      field19 
  17   12    0      field20
我想这样:

 ID    SEQ  GROUP  NAME
    0   0    0      field1
    7   1    0      field2
    4   2    0      field3 
    2   3    0      field4 
       15   1    2      field9   -> this field is from a group with ID = 2. 
       12   2    2      field10  -> this field is from a group with ID = 2. 
       11   3    2      field11  -> this field is from a group with ID = 2. 
    3   4    0      field5
    6   5    0      field6
    5   6    0      field7
    1   7    0      field8 
   8    8    0      field16 
   9    9    0      field17
  10   10    0      field18
        13   13      10     field15 -> this field is from a group with ID = 10. 
        14   14      10     field12 -> this field is from a group with ID = 10. 
  16   11    0      field19 
  17   12    0      field20
  18   13    8      field13
  19   14    8      field14
我的js代码是:

function Order()
{
    var rows = $('#tbs tr:not(:first)').detach();

    rows.sort(function (row1, row2) {
        return parseInt($(row1).find('td.seq').text()) - parseInt($(row2).find('td.seq').text());
    });

    rows.each(function () {
        console.log($(this).text() );
    });
}
SEQ列是我想要的顺序

这里有喜欢数学的人吗?哈哈


问候

由于给定的组,基本上您需要先按顺序对给定的数据进行排序,然后构建一棵树。然后需要遍历树以获得排序结果

var data=[{id:0,seq:0,group:0,name:'field1'},{id:7,seq:1,group:0,name:'field2'},{id:4,seq:2,group:0,name:'field3'},{id:2,seq:3,group:0,name:'field4'},{id:3,seq:4,group:0,name:'field5'},{id:6,seq:5,group:0,name:'field6'},{id:5,seq:6,group:0,group:,{id:1,seq:7,group:0,name:'field8'},{id:15,seq:1,group:2,name:'field9'},{id:12,seq:2,group:2,name:'field10'},{id:11,seq:3,group:2,name:'field11'},{id:14,seq:14,group:10,name:'field12'},{id:18,seq:13,group:8,name:'field13'},{id:19,seq:14,group:8,name:'field14'},{id:13,seq:13,group:10,name:'field15'},{id:8,seq:8,group:0,name:'field16'},{id:9,seq:9,group:0,name:'field17'},{id:10,seq:10,group:0,name:'field18'},{id:16,seq:11,group:0,name:'field19'},{id:17,seq:12,group:0,name:'field20'}]
.sort(函数(a,b){返回a.seq-b.seq;}),
树=函数(数据,根){
var r=[],o={};
data.forEach(函数(a){
o[a.id]={data:a,children:o[a.id]&&o[a.id].children};
如果(a.group==根){
r、 推(o[a.id]);
}否则{
o[a.群]=o[a.群]|{};
o[a.group]。children=o[a.group]。children | |[];
o[a.group].children.push(o[a.id]);
}
});
返回r;
}(数据,0),
排序=tree.reduce(函数遍历(r,a){
返回r.concat(a.data,(a.children | |[])。reduce(transverse,[]);
}, []);
console.log(已排序);

.as控制台包装{max height:100%!important;top:0;}
您的js代码是什么?问题已更新!