2011-12-19 11 views
-3

javascript配列はJavaScriptで今jsonArr = ["location","department","grade"];私はグローバルな配列を持っている

は私のメソッドの内部で、私はこの

var newArr = []; 
newArr = jsonArr; 
var sorted_arr = newArr.sort(); 

私newArrのソートが、問題はjsonArrも並べ替えてしまった私と一緒にされつつあるやっていると言うのソートjsonArrをソートしたくありません

誰が私に助けてくれるのですか?

答えて

7

newArrjsonArrはコード内で同じ配列を参照しています(このステートメントを使用しているように、ある配列を別の配列に割り当てると起こります):newArr = jsonArr;)。配列を最初にコピーする必要があります。あなたはそのためのslice methodを使用することができます。

var newArr = jsonArr.slice(0); 
var sorted_arr = newArr.sort(); 
-2
var newArr = $.extend(true, [], jsonArr); 
var sorted_arr = newArr.sort(); 

あなたは深いコピーを作成する必要があります。代わりに、Array.slice()メソッド(http://www.w3schools.com/jsref/jsref_slice_array.asp)を使用することもできます。

希望に役立ちます!ラインで

+0

答えがダウン投票された理由を尋ねることはできますか? deepcopy - newArrはうまく作成されています! – Navneet

+0

私はこれについての説明を得ることはほとんどできません!これは私のために働く。 – Navneet

3

この2つの変数が、メモリ内の同じ場所(一方の配列)を指すことを意味newArrからjsonArr参照を、ASSING newArr = jsonArr;。並べ替える前に明示的に配列をコピーする必要があります。

newArr = [].concat(jsonArr); 
関連する問題