2014-02-12 137 views
0

我試圖讓這個循環遍歷我的列表的1-27,但我認爲它是通過我的列表循環,只給我一個輸出的最後一個項目在列表中。我想我希望它每次循環時更新變量。更新最後一個for循環

我只得到'27'(列表中的最後一項)的輸出,或者如果我全部刪除它們,那麼我將得到'1'的輸出(見下文)。

有沒有人有這樣做的任何想法?

var regionslist = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27]; 

var justthisregion; 
var pndsplusthisregion; 
var test; 

var regionsplusponds = function (regionslist){ 

     for (var i in regionslist) { 
     justthisregion = finregions.remap([regionslist[i]],[1000],0); 
     } 
     pndsplusthisregion = justthisregion.add(justponds); 

     if (pndsplusthisregion===2000) { 
      test = finregions.remap([regionslist[i]],[2000]) 

     } else { 
      test = finregions.remap([regionslist[i]],[999]) 
     } 
     addToMap(test, {min:0, max:2000, palette:['ff0033','993366','003366'], opacity:0.5}, "Regions with Ponds"); 
}; 

回答

0

您正在儘快關閉您的循環。這是只有行被跑了27次justthisregion = finregions.remap([regionslist[i]],[1000],0);。所以justthisregion只會最終持有任何最後的意圖。向下移動您的}

var regionsplusponds = function (regionslist){ 
    for (var i in regionslist) 
    { 
    justthisregion = finregions.remap([regionslist[i]],[1000],0); 
    pndsplusthisregion = justthisregion.add(justponds); 
    if (pndsplusthisregion===2000) 
     test = finregions.remap([regionslist[i]],[2000]); 
    else 
     test = finregions.remap([regionslist[i]],[999]); 
    addToMap(test, {min:0, max:2000, palette:['ff0033','993366','003366'], opacity:0.5}, "Regions with Ponds"); 
    } /* <-- this was your problem line */ 
}; 
+0

我調整了代碼,將閉合迴路移動到合適的位置。這照顧了一個問題,但我也用'finregions'取代了'測試' - 我希望它每次都調整(或更新)該變量,然後再次運行循環。但是,我不確定這會做我想做的事情。 – user3299601

+0

那是一個不同的問題。如果這解決了您的原始問題,請選擇複選標記以接受解決方案,然後創建一個新問題。我不會安靜地理解你的新問題,所以最好開始一個新問題並更詳細地描述它。謝謝。 – gfrobenius

0

啊,你的循環並不包含你試圖迭代的所有邏輯。試試這個:

var regionsplusponds = function (regionslist){ 
    for (var i in regionslist) { 
     justthisregion = finregions.remap([regionslist[i]],[1000],0); 
     pndsplusthisregion = justthisregion.add(justponds); 
    if (pndsplusthisregion===2000){ 
     test = finregions.remap([regionslist[i]],[2000])} 
    else{ 
     test = finregions.remap([regionslist[i]],[999])} 
    addToMap(test, {min:0, max:2000, palette:['ff0033','993366','003366'], opacity:0.5}, "Regions with Ponds");} 
}; 

您的循環被重新分配justthisregion 27次,然後移動到只運行一次代碼的其餘部分。我感動的for循環結束的方括號從該行後:

justthisregion = finregions.remap([regionslist[i]],[1000],0);} 

此行之後:

addToMap(test, {min:0, max:2000, palette:['ff0033','993366','003366'], opacity:0.5}, "Regions with Ponds");} 

這應該工作。

+0

是的,這完全是我在20分鐘前所說的。 – gfrobenius

+0

是啊,對不起,我開始寫這個,然後繼續做其他事情。當我回來完成並提交時,我看到你已經提交。不要生氣,我們都可以是對的。 – DiddySinatra