2017-03-16 6 views
0

nodeJsを使用して簡単なデータ処理を行いました。 Linksは、ソースとターゲットを持つオブジェクトを持つ配列です。例えば非常に簡単なJavaScriptコードが機能しませんでした

Links=[{source: 'a', target: 'b'},{source: 'b', target: 'c'}] 

は、今私がリンクに4リンクを追加したいが、それは

for(var i=0;i<Links.length;i++){ 
    for(var j=0;j<2;j++){ 
     Links.push({ 
     source: 'yo', 
     target: 'yo' 
     }); 
    } 
    } 

ここで立ち往生し、プログラム全体が(無限ループのために行く)動作しませんでした。

答えて

6

非常に単純に、あなたはあなたが最後に到達することはできませんし推進しているリストに項目を追加しています。最も単純な方法は、配列の長さを変数に保存し、それを使用してすべての反復でLinks.lengthを計算するのではなく、それを使用することです。

+0

私は11分以上を受け入れることができません...... – SHE

0

ループ内の配列に項目を追加すると、配列のlengthプロパティを使用すると無限ループが発生します。条件の長さを使用するのではなく、変数に長さを格納する必要があります。

この状況でネストループを使用すると、配列に3つ以上の要素があると問題が発生する可能性があります。現時点では、配列内の各要素に2つの要素を追加します。つまり、ループの開始時に配列に3つのリンクがあり、4があった場合は8つのリンクが追加されます。

strickly append 4は、最初にいくつのリンクがあっても、配列にリンクされています。

startLength = Link.length; 

do { 
    Link.push({ 
     source:'yo', 
     target:'yo' 
    }); 
} while (Link.length < startLength + 4); 
関連する問題