Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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
在Object:Javascript中排序数组_Javascript_Sorting - Fatal编程技术网

在Object:Javascript中排序数组

在Object:Javascript中排序数组,javascript,sorting,Javascript,Sorting,我有一个对象,它包含不同的键&它们的值作为数组 前 现在我想根据keyart\u code对这些数组进行排序 有没有最好的方法来对这类数组进行排序 注意:每个数组大约有50k数组元素。所以我用这种方法在单个对象中构造所有这些对象,而不是数组中的对象 谢谢,各位。为什么不制作一个对象数组而不是数组对象呢?此外,数组元素的排序顺序是什么(例如,从开始到结束对每个字符进行比较,数字比较(?),等等?对于您当前的数据结构,这是非常低效的。正如@Qantas 94 Heavy所提到的,您可以使用对象数组,

我有一个对象,它包含不同的键&它们的值作为数组

现在我想根据key
art\u code
对这些数组进行排序

有没有最好的方法来对这类数组进行排序


注意:每个数组大约有
50k
数组元素。所以我用这种方法在单个对象中构造所有这些对象,而不是数组中的对象


谢谢,各位。

为什么不制作一个对象数组而不是数组对象呢?此外,数组元素的排序顺序是什么(例如,从开始到结束对每个字符进行比较,数字比较(?),等等?对于您当前的数据结构,这是非常低效的。正如@Qantas 94 Heavy所提到的,您可以使用对象数组,它将帮助您轻松排序。您应该以某种方式链接内部数组,以通过其中一个键对所有数组进行排序。否则将导致混乱。最好更改结构。每个数组大约有
50K
元素大小e、 如果我构造了一个对象数组,那么这将重复我的键
50K
次。这就是为什么我更喜欢这种方式。@Qantas94Heavy,@tejas,@i100:你们不考虑在每个数组元素中重复对象的
50K
键吗?非常感谢,我正在寻找的是一样的…)
var sortStack = []
  ,       len = Obj.art_code.length
  ;

// Sort by art_code, storing the sorting results
Obj.art_code.sort( function( a, b ){
    var res = (a>b)?-1:1; // This controls the sorting order
    sortStack.push( res );

    return res;
});

// sort everything else in the same order
for( var n in Obj ){
    if( !Obj.hasOwnProperty( n ) || ( n === 'art_code' ) ){ continue; }

    var ary = sortStack.slice();

    // sort anything that is an array of the same length
    Obj[n].sort
      && ( Obj[n].length === len )
      && Obj[n].sort( function(){ return ary.shift(); } );
}
var sortStack = []
  ,       len = Obj.art_code.length
  ;

// Sort by art_code, storing the sorting results
Obj.art_code.sort( function( a, b ){
    var res = (a>b)?-1:1; // This controls the sorting order
    sortStack.push( res );

    return res;
});

// sort everything else in the same order
for( var n in Obj ){
    if( !Obj.hasOwnProperty( n ) || ( n === 'art_code' ) ){ continue; }

    var ary = sortStack.slice();

    // sort anything that is an array of the same length
    Obj[n].sort
      && ( Obj[n].length === len )
      && Obj[n].sort( function(){ return ary.shift(); } );
}