最后更新一个for-in-loop

时间:2014-02-12 01:11:10

标签: javascript for-in-loop

我正在尝试让这个循环运行到我的列表中的1-27,但我认为它循环遍历我的列表并且只给出了列表中最后一项的输出。我想我希望它在每次循环时更新变量。

我只得到'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");
};

2 个答案:

答案 0 :(得分: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 */
};

答案 1 :(得分: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");}
};

你的for循环重新分配了这个区域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");}

这应该有效。