2016-03-22 6 views
0

前にバック状態に配列を取得:「unsorting」配列 - 私はArrayListのを持っているし、それを並べ替える場合は.sort javascriptの

myArrayList.sort(function(a, b) { return a - b }); 

取得することが可能である「myArrayList」バックそれは前だったために。ソートされていない配列のバックアップがなくてもうまくいきますか?並べ替えを元に戻し、話す。

+0

あなたはソート元に戻すにしたいですか?並べ替えを行う前に、以前の配列のバックアップをとる必要があると思います。保存されていない状態は検索できません。 – gurvinder372

+0

はい、私はソート元に戻します。可能であればバックアップなしで行うことをお勧めします。 –

+0

ソートすると、以前のアイテムの配置が失われ、記憶されません。バックアップを取らない限り、元の状態に元に戻すことはできません。お知らせしている – gurvinder372

答えて

2

はい、このようにArray#slice()で以前に作成したコピーでを並べ替えてからにコピーしてください。

slice()メソッドは、配列の一部のシャローコピーを新しい配列オブジェクトに返します。

var myArrayListCopy = myArrayList.slice(); 

var myArrayList = [1000, 5, 2, 8, 42, 101, 111, 20], 
 
    myArrayListCopy = myArrayList.slice(); // make copy from unsorted array first 
 

 
document.write('<pre>original ' + JSON.stringify(myArrayList, 0, 4) + '</pre>'); 
 
myArrayList.sort(function (a, b) { return a - b; }); 
 
document.write('<pre>sorted ' + JSON.stringify(myArrayList, 0, 4) + '</pre>'); 
 
myArrayList = myArrayListCopy; // assign backup 
 
document.write('<pre>from backup ' + JSON.stringify(myArrayList, 0, 4) + '</pre>');

+0

あなたはフィドルで表示できますか? http://jsfiddle.net/dLLan/33/ < - this aint working –

+0

@AndersPedersen、editを参照してください。ソートする前にコピーを作成します。 –

+0

大丈夫、あなたの答えをありがとう。 –

0

直接答えが

'いいえ、それがないではない'

のでは、ソート後の最終的な結果はcorrespです論理的な行動のいくつかの種類は、あなたが追加した場合ときにソートするために行っているロジックにonding、あなたは常にそれを信頼することはできませんすることはリバーシブルになります。 比較する履歴データはありません(動的の場合)

並べ替える前にコピーを作成してください。

+0

コピー! - 意図しない言葉 –

関連する問題