2016-04-08 12 views
0

私は、パートが2回繰り返される配列を設定しようとしています。これは3つの記事(articleArray [0]〜articleArray [2])で構成され、それぞれに記事内のすべての単語のリストがあります(例:articleArray [1] [1] articleArray [1] [2]にその最後の部分をクローンしたいのですが、なんらかの理由でうまくいきませんか? IはarticleArrayの各値[1] [2]いくつかの理由で、最後のものを除いて空である、ことを実行した後forループなぜノードに配列の一部をコピーできないのですか?

for (var x=0; x < articleCount; x++) { 
    for (var y=0; y < articleArray[x][1].length; y++) { 
      articleArray[x][2] = []; 
      articleArray[x][2][y] = articleArray[x][1][y]; 
     } 
    } 

を使用しています。なぜ私の価値観をコピーしていないのですか?

+1

ループのたびに 'articleArray [x] [2]'を新しい** empty **配列に再初期化しています! – Pointy

答えて

5

articleArray[x][2]を空の配列で繰り返し上書きしています。これは、配列のクローンを作成するsliceを使用して単純化することができることに注意してください

for (var x=0; x < articleCount; x++) { 
    articleArray[x][2] = []; 
    for (var y=0; y < articleArray[x][1].length; y++) { 
     articleArray[x][2][y] = articleArray[x][1][y]; 
    } 
} 

を::

for (var x=0; x < articleCount; x++) { 
    articleArray[x][2] = articleArray[x][1].slice(); 
} 
0
あなたは、内側のループの外線

articleArray[x][2] = []; 

1つのレベル上に、移動する必要があります

このバージョンはどうですか?

articleArray.forEach(arr => { 
    arr[2] = arr[1].slice(); 
}); 
関連する問題