私は元の配列を変更するために作っていた問題を抱えていた、好奇心旺盛なことはarr.join("...").split("...")
を追加することでこれを防ぐように見えるということです。この場合、オリジナルを変更してソートするのはなぜですか?
少し背景:私のスクリプトを作成し、array
にコンテンツを追加し
- この配列は、その後、私はのコピーを持ってしたい事が
arr[index] = "..."
を渡して追加されたarr=[]
- のように空の初期化
arr
私はソートを行うときに、orignialarr
がここ
を修正する
var arr=[], sorted;
arr[0] = "hello";
arr[1] = "world";
//buggy, the original is sorted
//sorted = arr.sort(function(a,b){return (a.length-b.length);});
sorted = arr.join("improbableCollision").split("improbableCollision").sort(function(a,b){return (a.length-b.length);});
.join("*").split("*")
を追加しても問題が解決する理由?- この問題の原因は何ですか?
- これを修正するよりエレガントな方法はありますか?
フルスクリプトについては、これはあなたの元の配列のコピーに参加する()、その後、分割()操作の結果ので働くこのjsFiddle
なぜ単に 'arr.sort'を使用してソートこれをしないでください、私は、私はいつも分割/スライス/等オリジナルの変更の恐れなしで意味する – ajax333221
それはちょうどarr.sortが動作する方法です、それは "インプレース"の並べ替えです。 – nicolaskruchten
@nicolaskruchtenあなたの答えに感謝します。+1 – ajax333221