2017-04-11 37 views
0

JavaScript對象字面值爲陣演示

function __sort_number(list) { 
 
    var anum = list.sort(function __asort(a, b) { 
 
\t \t return a > b ? 1 : a < b ? -1 : 0; 
 
\t }); 
 

 
\t anum.reverse(); 
 

 
\t return anum; 
 
} 
 

 
// list = [1,5,3,6,2] 
 

 
function evaluate_rank(list) { 
 

 
\t var sorted_list = __sort_number(list); 
 

 
\t // expected output : [6,5,3,2,1] 
 

 
\t var my_return = { 
 
\t \t 'original' : list, 
 
\t \t 'sorted' : sorted_list 
 
\t }; 
 

 
\t // expected output : { original : [1,5,3,6,2], sorted : [6,5,3,2,1] } 
 

 
\t console.log(my_return); 
 

 
\t // when i view the object on the console dev tools 
 
\t // the arrays are sorted in ascending order 
 
\t // but when i tried using a for loop to check the values 
 
\t // being iterated is correct on sorted 
 

 

 
\t for (var i = 0; i < my_return.sorted.length; i++) { 
 
\t \t \t console.log(my_return.sorted[i]); 
 
\t } 
 

 
\t // expected output : 6 5 3 2 1 
 
\t // actual output : 6 5 3 2 1 
 
} 
 

 
evaluate_rank([1,5,3,6,2]);

有,應該在創建對象 所以,如果我想查看的實際價值被保存的對象 是做任何設置相同的價值,我期待所以它不會創建一個混淆

回答

0

sort方法是可選的,sort方法將對其進行調用的數組進行排序。

在應用排序之前,您可以複製數組。

讓它

var anum = JSON.parse(JSON.stringify(list)).sort(function __asort(a, b) { 
     return a > b ? 1 : a < b ? -1 : 0; 
    }); 

或您的用例和更好的性能

var anum = list.slice(0).sort(function __asort(a, b) { 
     return a > b ? 1 : a < b ? -1 : 0; 
    });