2017-02-02 5 views
0

forループを使用して配列を変更し、その変更を別の配列に格納しようとしています。 2番目の配列は、私のforループの最後の反復のちょうどdインスタンスです。これは閉鎖の問題のようですが、私は回避策を見つけることができません?forループを使用して同じ配列の反復を変更して格納する

for (var d=1; d<arr1.length; d++) { 
     remove = arr1.splice(d,1).toString(); 
     arr1.splice(d+1,0,remove); 
    arr2.push(arr1); 
    } 
    return arr2; 
+0

同様に配列を追加してください。 –

+0

予想される出力。 – JohanP

+0

私はarr1として[1,2,3,4]を使い始めています。arr2が[1,2,3,4]、[1,3,2,4]、 [1,3,4,2]]。私はd Keli

答えて

0

あなたは、アレイのすべての修正バージョンを保存したい場合は、私は、配列の配列を使用することをお勧めし、この場合の、そのトップレベルの配列masterを呼びましょう。配列を変更するたびに、配列をmaster配列にプッシュするだけです。

これは "2d配列"と呼ばれるものです。次に、あなたが望む配列のどのバージョンにもアクセスすることができます。最初の配列はmaster[0]、次はmaster[1]などです。2番目の配列の最初の要素にアクセスするには、master[1][0]と言うことができます。

希望すると便利です。

+0

毎回arr1をarr2にプッシュすることでそれをしようとしていますか? – Keli

+0

私は今あなたの問題を知っています。配列は参照オブジェクトです。これについてはhttp://stackoverflow.com/questions/1686990/javascript-variable-reference-alias – minorcase

+0

を読んでください。この@keli http://docstore.mik.ua/orelly/webprog/jscript/ch04_04.htm – minorcase

関連する問題