私は一日中頭を叩いてしまいました。私はあきらめました。Googleスクリプト(javascript)unshiftは奇妙な動作を示していますか?
私はソースデータ配列とターゲットデータ配列の両方を受け取る関数を作成しました。それぞれのシート範囲に対応する。
ソース配列からアドレスを抽出し、ビットをモールドして結果をターゲット配列にシフトインし、その後に最上位の要素がポップされるようにしたいとします。私は最初に再帰的アプローチを試みましたが、これにより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;
};
これらのロガーを使用して生成されたログは、次のようになります。完全に奇妙な配列の内容を確認してください。
第一のループ [17-02-07 07:54:11:181 PST] [[、]、[、]、[、]、[、]、[、]、[、]、[ 、[]、
[17-02-07 07:54:11:181 PST ]、[Geen adressen、 - ]
[17-02-07 07:54:11:182 PST] [[Geen adressen、 - ]、[、]、[、 ]
第2ループ [17-02-07]、[ 07:54:1 1: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]、[、]、[、]、[、]、[]、[、]、 [、]、[、]、[、]、[、]、[、]、[、 ]、[、]]
第3のループ [17-02-07 07:54:11:185 PST [Moselborg、10,88]、 [、]、[]、[]、[]、[]、[]、[]、[、] 、[、]、[、]、[、]、[ ]
[17-02-07 07:54:11:185 PST] [Moselborg、10、88]
[17-02-07 07:54:11:186 PST] [[ [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つの指数を上げるために、すべてのシフトがない通りがあります。
助けてください...
array.pop()配列内の最後の要素を最初の要素から削除します。最初の要素を削除するには、array.shift()を使用します。https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/shift –
これは意味しません。しかし、私は解決策を見つけました:私は間違って考えています:javascriptで配列に変数を代入すると、参照渡しされます。私はこのポスト(スライス)でアドバイスを使用し、今は魅力のように動作します。 http://stackoverflow.com/questions/7486085/copying-array-by-value-in-javascript –