Het array object heeft verschillende methods
Zie voor allerhande manipulaties tussen sheets en array de volgende utilities:
Google Apps Script utility functions for working with 2D arrays in Sheets/tabs, plus a few other miscellanea.
-> voegt toe aan einde van de array
Bij multi dimentional arrays
Var newarray = [
[“linda”, 27],
[“lisa,30]
];
Gebruik je
newarray.push([“steve”,31”];
//voor het toevoegen van een volledig element
newarray[0].push(“new York”);
//voegt aan de array van linda een extra veld toe [“linda”,27,”new York”]
-> voegt toe aan begin van de array
Bij multi dimensional array valt de volledige array binnenin weg!
-> verwijdert laatste item uit de array
-> verwijdert eerste item van de array
-> geeft aantal elementen in array (van1-)
-> geeft true als de waarde gevonden wordt in een array.
arr.includes(valueToFind[, fromIndex]);
-> vind een single element in een array zie uitleg
Var newarray = array1.concat(array2)
-> voegt twee arrays samen
Doe dit enkel met array’s die dezelfde structuur hebben.
Je kan een array toevoegen die uit minder elementen bestaat, maar de structuur moet dezelfde zijn
2dearray = [[“joe”,20,”LA”]]
Var result= newarray.concat(2dearray);
Var position = array.indexOf(“searchvalue”, startposition)
-> geeft de eerste positie (start van 0.
IndexOf is case sensitive Match niet, dus converteren toLower als je alle waardes wil vinden.
Zie JavaScript indexOf, lastIndexOf Methods Tutorial - Google Sheets Apps Scripts - Array Methods Part 6
Array.lastIndexOf(“searchvalue”, startposition)
->geeft het resultaat startende van het einde van de array
lastIndexOf is case sensitive Match niet
Var result = array.join(separartor)
voegt alle elementen samen met default comma of een andere separartor (vb lege string), tot één string.
array.map(callback function) :
JavaScript Arrays & Map Method Tutorial - Google Apps Script Part 4
Neemt ieder element uit array en past daarop de functie toe.
Dit geeft resultaat 6,54,14 als newOneDimArr
Bij een multidimensional array, worden eveneens de eerste elementen doorgegeven, echter dit zijn nu array’s.
We noemen ze row, omdat het daarmee overeen komt. (row = array of cell).
Hierdoor zal je op de elementen in de callback moeten ingrijpen alsof het een array is.
De return wordt dus een array [ ] met elementen, niet noodzakelijk evenveel als de bron.
Hier wordt met de elementen wat gedaan, waardoor er een nieuwe arr ontstaat met twee elementen, samengesteld uit de eerste array.
Echter het return type blijft array.
Je kan ook deze kleine functies mee integreren in de map methode, waardoor je geen separate functie moet maken
De foreach kan je toepassen op een array, wanneer je geen array als resultaat terug wil, maar enkel de functie wil uitvoeren op alle elementen.
Dit in tegenstelling tot de map method van array’s, waarbij een array wordt teruggegeven.
Filter laat je toe om binnen een array de waardes te zoeken die overeenkomen met de uit uitkomst van een filter functie.
Deze functie geeft TRUE of FALSE als uitkomst.
De filter functie werkt identiek aan de map functie, waardoor voor ieder element in de array de functie wordt aangeroepen met dit element als waarde.
Wanneer de uitkomst true is, wordt het element behouden, anders niet.
Hier wordt een nieuwe array gemaakt die enkel de waardes >6 zal bevatten.
Wanneer je een array hebt die zowel getallen als tekst bevat, kan je beide scheiden door gebruik te maken van de indexOf functie.
Het resultaat van deze functie is -1 wanneer er geen type “text” wordt gevonden.
Het converteren naar een string zodat ook de getallen als “strings” worden gezien, is noodzakelijk.
In plaats van het schrijven van if statements, kan je gebruik maken van de volgende notatie, die alle handelingen in één keer doet.
De filter wordt nu toegepast op de 2de kolom van een range, vandaar item[1].
De check === geeft een resultaat true/false
Maar wanneer je de naam “parametreerbaar" wil maken, moet je een extra var als parameter meegeven.
In zulk een situatie kan het handiger zijn om de filter functie naamloos mee te geven als parameter aan de aanroep.
Hierdoor kan je de zoekterm eenvoudig vervangen door de variabele die reeds bestaat en heb je geen extra parameter nodig.
Wil je je zoekvoorwaarden uitbreiden, zodat het voldoet aan meerdere criteria, dan kan je dit met de && en || operator in de single line versie eveneens.
ls je in de 2d array alles wil filteren waarbij in de 3de kolom zowel items van Nike en ADIDAS voor een en dezelfde persoon worden gezocht, doe je dit zoals in het voorbeeld.
De sort methode op een array geeft standaard een unicode sortering, iets waar je niet veel mee kan aanvangen.
Je kan echter eveneens gebruik maken van een callback functie, waardoor je zelf kan bepalen wat je wil sorteren.
De return van de formule in een sort bepaald wat er met beide getallen dient te gebeuren.
Bij 1 wordt a naar b verschoven.
Bij -1 wordt b naar a verschoven
Bij 0 blijven hun posities bewaard.
Vermits de sort method wordt toegepast op alle elementen in een array (zoals map) zal dit als resultaat hebben dat de sortering:
Oplopen is als A>B return op 1 en A<B return op -1 staat
Aflopend is als A>B return op -1 en A<B return op 1 staat
Feitelijk werkt de sort functie op basis van een positieve, negatieve of nul uitkomst.
Je kan dan ook de volledige if structuur vervangen door een simpele formule
Return a - b; //oplopende sortering
Return b - a; aflopende sortering
Voor het sorteren van strings is het noodzakelijk om deze eerst te converteren toLowerCase zodat alles alfabetisch gesorteerd wordt, ongeacht wat de case is.
Om er zeker van te zijn dat ook getallen die tussen de teksten staan als strings worden behandeld, gebruik je de toString() method.
Het sorteren van Strings en getallen en daarna het terug gebruiken van de oorspronkelijke tabelwaarde zonder converstei toLower, vraagt een andere aanpak:
JavaScript Arrays Sort Method Tutorial - Google Sheets Apps Scripts - Array Methods Part 9
Hierin zijn een aantal stappen vervat:
Splits de array in getallen en tekst mbv typeof
Sorteer de getallen in een 2D array met de positie in de oorspronkelijke array
Sorteer de tekst in een 2D array met positie in de oorspronkelijke array
Combineer de positie met de oorspronkelijke array data(arr) voor getallen(numbers) en strings(textvals)
Concat beide arrays tot één geheel
Schrijf het terug naar de sheet.
Zie JavaScript Every & Some Array Methods Tutorial - Google Sheets Apps Scripts - Array Methods Part 8
Bij every moeten alle elementen(AND) van de array voldoen aan de voorwaarde (callback functie=true), bij Some, moet minstens één element(OR) voldoen aan de voorwaarde.
In deze functie gebruiken we de NIET (!) om de uitkomst van de every functie te gebruiken op voorwaardes waarbij er niet wordt voldaan aan een voorwaarde.
Bovenstaande filtert alle lege rijen weg uit een tabel, vermits we kijken naar een rij waarin alle cellen leeg zijn en de uitkomst van de functie negeren
!r.every(..._
Door de functie aan te passen naar some, worden alle rijen waarbij minstens één blanco cel zit verwijdert uit de tabel.
Je kan voor het versnellen in de zoek en filterfuncties binnen arrays gebruik maken van
Unique(filter…,
waardoor je de resultaat range verkleint
Array_constraint
waardoor je de bewerking beperkt tot een subset van de volledige array.