2017-03-16 52 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屬性將導致無限循環。您應該將長度存儲在變量中,而不是使用條件中的長度。

在這種情況下使用嵌套循環可能會導致問題,如果數組中有兩個以上的元素。此刻,您爲數組中已有的每個元素添加兩個元素。這意味着它將添加6個鏈接,在循環開始時數組中有3個鏈接,如果有4個鏈接,則依此類推。

你可以這樣做到strickly追加4個鏈接到你的數組,無論有多少鏈接在開始。

startLength = Link.length; 

do { 
    Link.push({ 
     source:'yo', 
     target:'yo' 
    }); 
} while (Link.length < startLength + 4);