wake-up-neo.com

Für jede Schleife im Google Apps-Skript

Ich schreibe einen einfachen E-Mail-Bot-Handler mit Google Apps Script.
Angenommen, es gibt eine Reihe von Dingen.
Ich möchte das Array mit einer for-each-Schleife durchlaufen.
(Es ist mühsam, for(var i=0;i<threads.length;i++) jedes Mal zu schreiben, wenn ich ein Array durchlaufe.)
Ich suche eine for-each-Schleife für ein Google Apps-Skript.
Ich habe bereits this Antwort gesehen, aber das Objekt ist undefiniert, vermutlich weil die for-Schleife nicht funktioniert.

// threads is a GmailThread[]
for (var thread in threads) {
  var msgs = thread.getMessages();
  //msgs is a GmailMessage[]
  for (var msg in msgs) {
    msg.somemethod(); //somemethod is undefined, because msg is undefined.
  }
}


(Ich bin noch neu in Javascript, kenne aber eine for-each-Schleife von Java.)

13
phlaxyr
 In Google Apps Script: 
 Bei Verwendung von "for (var item in itemArray)" ist 
 "Item" der Index von itemArray in der gesamten Schleife (0, 1, 2) , 3, ...). 
 
 Bei Verwendung von "for each (var item in itemArray)" sind 
 "Item" die Werte von itemArray in der gesamten Schleife (' item0 ', 
' item1 ',' item2 ',' item3 ', ...). 

Beispiel:

function myFunction() {
  var arrayInfo = [];

  arrayInfo.Push('Apple');
  arrayInfo.Push('orange');
  arrayInfo.Push('grapefruit');

  Logger.log('Printing array info using for loop.');
  for (var index in arrayInfo)
  {
    Logger.log(index);
  }
  Logger.log('Printing array info using for each loop.');
  for each (var info in arrayInfo)
  {
    Logger.log(info);
  }
}

Ergebnis:

 
 [17-10-16 23: 34: 47: 724 EDT] Array-Informationen mit for-Schleife drucken. 
 [17-10-16 23: 34: 47: 725 EDT] 0 
 [17-10-16 23: 34: 47: 725 EDT] 1 
 [17-10-16 23: 34: 47: 726 EDT] 2 
 [17-10-16 23: 34: 47: 726 EDT] Drucken von Array-Informationen für jede Schleife. 
 [17-10-16 23: 34: 47: 727 EDT] Apple 
 [ 17-10-16 23: 34: 47: 728 EDT] Orange 
 [17-10-16 23: 34: 47: 728 EDT] Grapefruit 
 
33
Branden Huggins

Von MDN , The for...in statement iterates over the enumerable properties of an object, in original insertion order. For each distinct property, statements can be executed. Du willst also kein for...in Aussage. Sie können forEach () verwenden, das eine bereitgestellte Funktion einmal für jedes Array-Element ausführt, obwohl Ihre Frage keine Funktion enthält. Vielleicht ist das nicht das, was Sie wollen. map () ist eine weitere Option, die jedoch auch eine Funktion benötigt. Die map () -Methode erstellt ein neues Array mit den Ergebnissen des Aufrufs einer bereitgestellten Funktion für jedes Element im aufrufenden Array.

3
Jason Fry