2017-04-11 5 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; 
    }); 
関連する問題