对于这样的应用场景,部门和员工这个的父子数据 如下
部门1 订单数
人员1 订单数
人员2 订单数
部门2 订单数
人员3 订单数
人员4 订单数
人员5 订单数
把这样的数据,分到表格中,按部门排序,再进入部门后按人员排序
//对数据进行排序
function dealSord(data){
//先处理父级的排序
var parentdata = dealParent(data);
//处理子级的排序
var result = new Array();
result.push(data[0]);
var subdata = dealSub(parentdata);
for(var i=0 ; i<subdata.length ; i++){
result.push(subdata[i]);
}
return result;
}
**
* 处理父级
* @param data
* @returns {Array}
*/
function dealParent(data){
var compare = new Array();
var topcompare = new Array();
for(var i =1; i<data.length ;i++){
if(data[i][1].value == "null"){
compare.push({
"name" : data[i][0].value,
"value" : data[i][6].value
})
}
}
compare.sort(compareValue);
var count = 10 < compare.length ? 10 : compare.length;
for(var i=0;i< count ;i++){
topcompare[i] = compare[i];
}
var newdata = new Array();
var a=0;
for(var k=0 ; k<topcompare.length ;k++){
for(var i=0; i<data.length ; i++){
if(topcompare[k].name == data[i][0].value ){
newdata[a] = data[i];
a++;
}
}
}
return newdata;
}
var tempParentSub = new Array();
function dealSub(data){
var comparesub = new Array();
var topsub = new Array();
tempParentSub.length=0;//清空数组
//按照父级将子级分组,插入排序
var tempParent = "";
var tempSub;
for(var k=0 ; k<data.length ; k++){
if(data[k][1].value=="null"){
tempParent = data[k][0].value;
tempSub = new Array();
tempParentSub.push(tempSub);
}
if(data[k][0].value == tempParent && data[k][1].value!="null"){
tempSub.push({
"parentname" : data[k][0].value,
"subname" : data[k][1].value,
"value" : data[k][6].value
});
tempSub.sort(compareValue);
}
}
var temp = new Array();
for(var j=0;j<tempParentSub.length;j++){
for(var i=0 ; i<tempParentSub[j].length;i++){
// if(i>9){//取前10个sku
// break;
// }
temp.push(tempParentSub[j][i]);
}
}
var newsub = new Array();
var a=0;
var parentname ="";
var subname="";
var setparent = false;
for(var k=0;k<temp.length;k++){
if(parentname!=temp[k].parentname){
setparent = true;
parentname = temp[k].parentname;
}else{
setparent = false;
}
for(var m=0;m<data.length;m++){
if(parentname == data[m][0].value &&
data[m][1].value=="null" && setparent){
newsub[a] = data[m];
a++;
continue;
}
if(temp[k].subname == data[m][1].value){
var value = data[m][6].value;
if(temp[k].value == value){
newsub[a] = data[m];
a++;
break;
}
}
}
}
return newsub;
}