繁体   English   中英

如何在javascript中对嵌套对象数组进行排序

[英]How To sort an array of nested objects in javascript

我有这样的数组

var array = [{
    order: 3,
    sub - array: [{
        order: 2
    },{
        order: 1
    }]
},{
    order: 2,
    sub - array: [{
        order: 2
    },{
        order: 1
    }]
}];​

现在,我想按属性order对完整集合进行order ,因此外部数组和内部数组都应基于属性顺序进行排序。

最终输出应如下所示。

var array = [{
    order: 2,
    sub - array: [{
        order: 1
    },{
        order: 2
    }]
},{
    order: 3,
    sub - array: [{
        order: 1
    },{
        order: 2
    }]
}];​
var propertySort = function(a, b){
    return a.order > b.order ? 1 : (a.order < b.order ? -1 : 0);
    }

var reorder = function(arr){
    var l = arr.length;
    while (l--){
        if (arr[l]['sub-array']){
            reorder(arr[l]['sub-array']);
        }
    }
arr.sort(propertySort);
};

reorder(arr);

console.log(arr);

这应该对任意数量的嵌套级别重新排列数组。

使用Array.prototype.sort并调用它在array并随后中的每个元素array与适当的比较功能。 这样的事情应该起作用:

array.sort(function (e1, e2) {
  return (e1.order - e2.order);
});

array.forEach(function(e) {
  e["sub-array"].sort(function (e1, e2) {
    return (e1.order - e2.order);
  });
});

暂无
暂无

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

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