2016-04-27 3 views
1

vielleicht ist es die falsche Art und Weise tun, ich bin, aber ich möchte in einem Objekt 2 Arrays unterschiedlicher Länge kombinieren, so dass ich diesen Code:Warum meldet der Google Apps Script-Debugger die Anzahl der Array-Elemente falsch?

function MyArrayOfFilesAndFolders(){ 
    var folders = [my array of folders] // 60 items 
    var files = [my array of files] // 220 items 
    var res = { 
       folders: folders, 
       files: files 
      } 
    return res 
} 

Das resultierende Objekt hat 60 Artikel für Ordner, sondern nur 100 Elemente für Dateien (trotz der Tatsache, dass das ursprüngliche Array "Dateien" 220 Elemente enthält).

Es ist etwas falsch in dieser Methode oder ist ein GAS-Fehler? Ich vermisse etwas anderes?

Vielen Dank für jede Hilfe

+0

Der Debug-Modus zeigt jetzt nur die ersten 100 Elemente eines Arrays an. Wenn Sie also die Array-Länge nach bewerten, können Sie sich irren. Probiere 'Logger.log (res.files.length)' und melde dich zurück. – Jonathon

+0

@ Jonathon Danke, du hast Recht! Das Seltsame ist, dass ich im Debugger das Array "files" sehe, das 220 Elemente hat, und nur wenn ich es mit dem anderen Array kombiniere (Ordner, 60 Elemente), geht es zu 100 Elementen. Wo haben Sie im Debugger über dieses Limit gelesen? –

+0

Es war eine Änderung vor einiger Zeit im Wesentlichen aus Leistungsgründen. Die Handhabung von Super-Large-Arrays führte zu einer erheblichen Verlangsamung, bei der das Browser-DOM der limitierende Faktor war. – Jonathon

Antwort

1

Wie Jonathon sagt, hat der Debugger eine Begrenzung der Länge der Arrays und in manchen Fällen schneidet er lange Arrays auf 100 Elemente ab. Um die tatsächliche Länge eines Arrays zu testen, ist es besser, Logger.log ("Anzahl der Elemente:" + array.length) zu verwenden.

+0

Eigentlich möchte ich diese 'neue' Funktion des Debuggers eine Array-Anzahl als Teil der Benutzeroberfläche enthalten. Es ist in Ordnung, die Zeilen auf 100 zu begrenzen, aber manchmal ist die Länge, die als Teil der Debug-Eigenschaft gemeldet wird, gut. – Jonathon

+0

@ Jonathon Der Debugger enthält diese Informationen. Klicken Sie beim Debuggen auf die Schaltfläche zum Anzeigen aller Elemente oben rechts in der Symbolleiste. –

+0

@DouglasGaskell ja, ich benutze dies bereits für Objektverzeichnisse, wenn nötig, aber ich bin faul, ich will Array-Count nur dort. Es ist dort, aber ein abgeschnittenes Array zeigt 100. Ich möchte, dass dies die tatsächliche Anzahl ist. – Jonathon

0

nicht sicher, wie Sie es wünschen ... die Werte anzuzeigen Ist diese Hilfe ?:

function MyArrayOfFilesAndFolders(){ 
    var folders = ["I", "Am", "Robot"]; 
    var files = ["Yes","In","Deed"] 
    var res = folders+files; 
    Logger.log(res) 
} 

Wenn Sie das konkretisieren nicht kann? Prost!

+0

Danke, aber es ist nicht der Punkt meiner Frage; Ich versuche, es besser zu erklären: Ich habe zwei Arrays unterschiedlicher Länge und ich möchte in einem Objekt kombinieren; das resultierende Objekt ist so etwas wie: '{[Dateien] [Wert] [Wert] [Ordner] [Wert] [Wert] [Wert] [Wert] [Wert] }' und es ist in Ordnung für meine Zwecke. Das eigentliche Problem ist, dass in meinem Fall jedes Array größer als 100 Elemente abgeschnitten wird, wenn ich es mit einem anderen Array mit der Funktion, die ich in meiner Frage gepostet habe, kombiniere ... also frage ich, ob ich es tue falsch oder ist ein Fehler in Google Apps Script. –

+0

@ManuelSerrenti Wie bestimmen Sie, dass Ihr Array abgeschnitten wurde? Es sollte keinen Grund dafür geben. Versuchen Sie auch, Jonathons Vorschlag, Protokollieren Sie die Array-Länge, Debug wird nur die ersten 100 Elemente angezeigt. –

Verwandte Themen