谷歌脚本(javascript)unshift显示奇怪的行为?

时间:2017-02-07 16:24:51

标签: javascript arrays google-sheets

我一整天都在喋喋不休,我放弃了:

我创建了一个接收(其中包括)源数据数组和目标数据数组的函数,这两个函数都对应于各个工作表范围。

我想从源数组中提取地址,将它们模制一下并将结果取消移动到目标数组,然后弹出顶部元素。我首先尝试了递归方法,但由于这个原因,我又回到了while循环。问题是,对于每个循环,地址以一些奇怪的乘法方式移位。我不知道如何解释它,但检查日志。

    function arrZoekAdressen(strZoekGebied, arrBron, intRij, arrGebiedAdressen, arrActieveStraat) {
  if (arrActieveStraat == undefined) {
    arrActieveStraat = ["Geen adressen", "-"];
  }

  //#1
  while (intRij < arrBron.length) {
    if (arrBron[intRij][0] == strZoekGebied){
      if (arrBron[intRij][2] == arrActieveStraat[0]){
        arrActieveStraat[1] += ", " + arrBron[intRij][3] + arrBron[intRij][4];
      } else {
Logger.log(arrGebiedAdressen);
Logger.log(arrActieveStraat);
        arrGebiedAdressen.unshift(arrActieveStraat);
        arrGebiedAdressen.pop();
Logger.log(arrGebiedAdressen);
        arrActieveStraat[0] = arrBron[intRij][2];
        arrActieveStraat[1] = arrBron[intRij][3] + arrBron[intRij][4];
      }
    }
    intRij++;
  }

  //#2
  arrGebiedAdressen.unshift(arrActieveStraat);
  arrGebiedAdressen.pop();
  return arrGebiedAdressen;
};

使用这些记录器生成的日志如下所示,查看数组内容,非常奇怪!

  

FIRST LOOP   [17-02-07 07:54:11:181太平洋标准时间] [[,],[,],[,],[,],[,],[,],[,],   [,],[,],[,],[,],[,],[,],[,]]

     

[17-02-07 07:54:11:181 PST] [Geen adressen, - ]

     

[17-02-07 07:54:11:182 PST] [[Geen adressen, - ],[,],[,],[,],[,   ],[,],[,],[,],[,],[,],[,],[,],[,],[,],

     

第二圈   [17-02-07 07:54:11:183 PST] [[Cuyleborg,212,226],[,],[,],[,],   [,],[,],[,],[,],[,],[,],[,],[,],[,],[,]]

     

[17-02-07 07:54:11:183 PST] [Cuyleborg,212,226]

     

[17-02-07 07:54:11:184 PST] [[Cuyleborg,212,226],[Cuyleborg,212,   226],[,],[,],[,],[,],[,],[,],[,],[,],[,],[,],[,   ],[,]]

     

第三圈   [17-02-07 07:54:11:185 PST] [[Moselborg,10,88],[Moselborg,10,88],   [,],[,],[,],[,],[,],[,],[,],[,],[,],[,],[,],[,   ]

     

[17-02-07 07:54:11:185 PST] [Moselborg,10,88]

     

[17-02-07 07:54:11:186太平洋标准时间] [[Moselborg,10,88],[Moselborg,10,88],   [Moselborg,10,88],[,],[,],[,],[,],[,],[,],[,],[,],   [,],[,],[,]]

     

等。等

源列表如下所示:

NR CITY Cuyleborg 212

NR CITY Cuyleborg 226

NR CITY Moselborg 10

NR CITY Moselborg 88

当然,每个街道应该只在阵列中出现一次,因为你会期望其他街道上的每一条都不会移动一个索引。

请帮忙......

1 个答案:

答案 0 :(得分:0)

我自己解决了:javascript通过引用将对象(包括数组)传递给变量。我在Copying array by value in JavaScript处应用了这个建议,现在它就像一个魅力。我应该早点想到这个,aaaaaaarrrghhh!