简体   繁体   English

如何使用javascript / jquery对嵌套数组对象的顺序进行排序

[英]How to sort the order of the nested array object using javascript/jquery

Having a nested array object, trying to sort it based on the order value present in my object. 有一个嵌套的数组对象,请尝试根据对象中存在的顺序值对其进行排序。

So, am splitting the object and pushing it into two new array variables. 因此,将对象拆分并将其推入两个新的数组变量中。 But in one of my object response there is an array, i need to sort the values in ascending order. 但是在我的对象响应之一中,有一个数组,我需要按升序对值进行排序。 Here it is what I have tried. 这是我尝试过的。

JS: JS:

var obj = {details:[{type:"general",order:1,},{type:"general1",order:3,},{type:"static",order:4,list:[{type:"static2",order:3,},{type:"static1",order:2,},]},{type:"general2",order:2,}]};

var basicArray = [];
var listArray = [];
var sortedArray = "";
var sortedListArray = "";
var checkListArray = [];

var objDetails = obj.details;
sortedArray = _.sortBy(objDetails,"order");

for(var i=0;i<sortedArray.length;i++){
    if(sortedArray[i].list){
        listArray.push(sortedArray[i]);
    }
    else{
        basicArray.push(sortedArray[i]);
    }
}

for(var j=0;j<listArray.length;j++){
    if(listArray[j].list){
        for(var k=0;k<listArray[j].list.length;k++){
            sortedListArray = _.sortBy(listArray[k].list,"order");
            checkListArray.push(listArray[k].list);
        }
    }
}

Demo URL 演示网址

So the expected output is in my second loop, i want to order the values of my array, like I did in my first loop 所以预期的输出在第二个循环中,我想对数组的值进行排序,就像在第一个循环中一样

Use sortBy on list : 在列表上使用sortBy:

for(var i=0;i<sortedArray.length;i++){
    if(sortedArray[i].list){
        sortedArray[i].list =_.sortBy(sortedArray[i].list,"order");
        checkListArray.push(sortedArray[i].list);    // add sorted list to checklist
        basicArray.push(sortedArray[i]);     // add element with sorted list to basic array
    }
    else{
        basicArray.push(sortedArray[i]);
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM