在javascript中按数组中的组排序
我想要一个帮助,用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
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代码是什么?问题已更新!