入力された配列のソートされたコピーを返すソート関数が必要だったとしましょう。私は単純に、このどのように元の配列を変更せずに配列をソートできますか?
function sort(arr) {
return arr.sort();
}
を試してみましたが、私は私のsort
方法は、配列を変異されていることを示しており、これでそれをテストしました。
var a = [2,3,7,5,3,7,1,3,4];
sort(a);
alert(a); //alerts "1,2,3,3,3,4,5,7,7"
は、私はまた、このアプローチ
function sort(arr) {
return Array.prototype.sort(arr);
}
を試みたが、それがすべてでは動作しません。
これは単純に私自身のソートアルゴリズムを手で動かしたり、配列のすべての要素を新しいものにコピーしたりする必要がない方法ですか?
アレイのディープコピーを作成し、代わりに並べ替えます。 – evanmcdonnal
@evanmcdonnal浅いコピーは、すべてが必要な場合は配列のすべての項目の並べ替えではなく、重複ではありません。 – Kekoa
'.sort'は' this'値が配列であることを要求します。最後のスニペットが機能するには '.sort.call(arr)'を実行します(問題は解決しません)。 – pimvdb