Sorting Javascript Array with Chrome?

后端 未结 4 1499
悲&欢浪女
悲&欢浪女 2020-12-06 09:10

Is there a way to sort an array using Chrome?


Using the sort function does not work as seen in this example:

var myArray = [1,4,5,3,2];

myArra         


        
4条回答
  •  [愿得一人]
    2020-12-06 10:03

    Because of what the ECMA Standard covers about sort arrays (in a very simplified way):

    • If in the comparison receives 1 A descend one position.
    • If receives -1 maintain the position and define the superior ranking toward the B.
    • If receives 0 does nothing.

    The safest way to guarantee the same behavior in all browser is :

    // descending order
    abc =[10,2,4,1]; 
    abc.sort(function( a , b ){
      return a > b ? -1 : 1;
    });
    
    // ascending order
    abc.sort(function( a , b ){
      return a > b ? 1 : -1;
    });
    

    For primitive objects is posible to use the short version

    // descending order
    abc.sort(function( a , b ){
      return b - a; 
    });
    
    // ascending order
    abc.sort(function( a , b ){
      return a - b; 
    });
    

    if you have next array:

    var items = [
           { name: 'Edward', value: 21 },
           { name: 'Sharpe', value: 27 },
           { name: 'And', value: 31 },
           { name: 'The', value: -12 },
           { name: 'Zeros', value: 37 },
           { name: 'Magnetic', value: 37 } 
    ]
    

    The right way is:

     items.sort(function( a , b ){
       var result = a == b ? 0 : b > a ? -1 : 1
       if(result === 0)
       {
         // implement a tight break evaluation
       }
       return result ;
      });
    

    This is the right way because the way that the browser iterates is not defined in the ECMA standard and browser may iterate in different ways. For instance most browsers iterate from top to bottom, but chrome iterates the 1st element with the last and go the way up. So in case of a tight may result different result of most browsers.

提交回复
热议问题