NEWS
[Vorlage] Hilfreiche JavaScript-Funktionen
-
Dies ist eine Sammlung von JavaScript-Funktionen, die hilfreich zur Erstellung von Skripten im JavaScript-Adapter sind. Ich pflege diese Scripts kontinuierlich und ergänze entsprechend.
Bitte beachtet: ioBroker bringt schon einige tolle Funktionen mit, siehe: ioBroker JavaScript-Funktionen
Weitere hilfreiche Ressourcen:
- Aufruf: Welche guten JavaScripts setzt ihr ein? Sammlung einiger Scripts
- javascript.info: Gutes JavaScript-Tutorial
- regex101: Zum einfachen Erstellen und Testen von Regular Expressions
1. Strings
2. Strings/Arrays gemischt
3. Arrays
4. Zahlen
5. Datum/Zeit
6. Filesystem
7. Regular Expressions - RegExp
8. XML
9. Astro
10. ioBroker
11. Weiteres für das Schreiben von Scripten
-
So, habe noch ein paar Funktionen ergänzt, außerdem alle in Spoiler gepackt, somit sieht das schon mal deutlich übersichtlicher aus.
Ich werde weiter ergänzen.. Ich hoffe, die Forumsoftware macht mir keinen Strich durch die Rechnung wegen zu langem Text im Beitrag , aber dann teile ich auf oder lagere auf Github aus.Ich ergänze gerne auch hilfreiche Funktionen von Euch, bitte einfach hier posten. Diese sollten im ioBroker getestet sein und laufen, und wiederkehrend verwendbar sein, also nicht zugeschnitten auf einen bestimmten Adapter oder zu speziell.
Als nächstes könnte man dann Functions vereinfachen/zusammenfassen, gerade unter "Datum/Zeit" finden sich da einige Kandidaten, die sehr ähnlich sind. Aber das ist auch der Vorteil hier beim sammeln, dann sieht man das gleich.
-
paar Sachen ergänzt...
-
ein paar Funktionen nachgetragen...
-
Vielen Dank für deine Arbeit!
-
Große Klasse. Danke dafür. Sofort einen Bookmark gemacht!!
-
Auch von mir ein herzliches Danke.
War auf der Suche nach einer Funktion add Day to Date.
Und schwupps schon gefunden -
ein paar Funktionen ergänzt...
-
stateLastUpdated() ergänzt.
-
isState() durch existsState() ersetzt:
Hinweis (07.01.2019): Bislang gab es hier eine Function isState(), diese ist nun hinfällig, weil es mit existsState() nun (mind. ab JS-Adapter-Version 4.3.4, gg. früher schon) eine neue ioBroker-Funktion gibt, um zu prüfen, ob ein State (Datenpunkt) existiert. Beispiel: -
createUserStates() ergänzt:
Mit diesem Script bzw. dieser Funktion können States (Datenpunkte) unter
0_userdata.0
oder unterjavascript.x
angelegt werden. Dabei können mehrere States gleichzeitig angelegt werden. Sobald alle erfolgreich angelegt wurden, kann danach (percallback
) ein beliebiger Code ausgeführt werden, also beispielsweise die Haupt-Funktion des Scripts. -
isTimeInAstro() und fileExistsSync() ergänzt.
-
Notiz an mich selbst:
json2table()
hinzufügen, also Umwandlung JSON in HTML-Tabelle.
https://forum.iobroker.net/topic/32540/json-zu-html-und-in-datei-schreiben-ablegen -
Ich möchte dateToString(), selbiges wird aber als unbekannt markiert. Muss ich, und wenn ja was, irgendein zusätzliches Modul/Adapter laden?
-
@Matthias-Stübner
Was meinst du genau mit "als unbekannt markiert"? Am besten bitte Logausgabe hier posten.
Du brauchst keine weiteren Adapter ö.ä. hierfür. -
@Matthias-Stübner das im Editor unterstrichen wird, kannst DU an der Stelle ignorieren.
Es sollte dennoch wie erwartet funktionieren. -
Danke für die Funktionen !
-
clearStr
stimmt nicht mit seiner Beschreibung überein:> String(null) 'null'
-
@AlCalzone
Danke für den Hinweis, hab die Funktion jetzt ersatzlos entfernt
Ist so "generisch" eher nicht zu gebrauchen, weil z.B. andere Datentypen (wie number) auch nicht behandelt werden und je nach Einsatzzweck was unterschiedliches zu prüfen ist. -
Moin zusammen,
ich habe mal versucht ein paar der Funktionen bei mir einzufügen.
Allerdings bekomme ich immer folgende Meldung:
script.js.common.Array compile failed: at script.js.common.Array:256
das komische. Das Script geht garnicht bis Zeile 256...
Auch wenn ich dann alle Zeilen aus kommentiere habe ich dieses Problem.
/** * Remove Duplicates from Array * Source - https://stackoverflow.com/questions/23237704/nodejs-how-to-remove-duplicates-from-array * @param {array} inputArray Array to process * @return {array} Array without duplicates. */ function GlobalarrayRemoveDublicates(inputArray) { let uniqueArray; uniqueArray = inputArray.filter(function(elem, pos) { return inputArray.indexOf(elem) == pos; }); return uniqueArray; } /** * Clean Array: Removes all falsy values: undefined, null, 0, false, NaN and "" (empty string) * Source: https://stackoverflow.com/questions/281264/remove-empty-elements-from-an-array-in-javascript * @param {array} inputArray Array to process * @return {array} Cleaned array */ /* function GlobalcleanArray(inputArray) { var newArray = []; for (let i = 0; i < inputArray.length; i++) { if (inputArray[i]) { newArray.push(inputArray[i]); } } return newArray; } */ /** * Removing Array element(s) by input value. * @param {array} arr the input array * @param {string} valRemove the value to be removed * @param {boolean} [exact=true] OPTIONAL: default is true. if true, it must fully match. if false, it matches also if valRemove is part of element string * @return {array} the array without the element(s) */ /* function GlobalarrayRemoveElementsByValue(arr, valRemove, exact) { if (exact === undefined) exact = true; for ( let i = 0; i < arr.length; i++){ if (exact) { if ( arr[i] === valRemove) { arr.splice(i, 1); i--; // required, see https://love2dev.com/blog/javascript-remove-from-array/ } } else { if (arr[i].indexOf(valRemove) != -1) { arr.splice(i, 1); i--; // see above } } } return arr; } */ /** * Checks if Array or String is not undefined, null or empty. * 08-Sep-2019: added check for [ and ] to also catch arrays with empty strings. * @param inputVar - Input Array or String, Number, etc. * @return true if it is undefined/null/empty, false if it contains value(s) * Array or String containing just whitespaces or >'< or >"< or >[< or >]< is considered empty */ /* function GlobalisLikeEmpty(inputVar) { if (typeof inputVar !== 'undefined' && inputVar !== null) { let strTemp = JSON.stringify(inputVar); strTemp = strTemp.replace(/\s+/g, ''); // remove all whitespaces strTemp = strTemp.replace(/\"+/g, ""); // remove all >"< strTemp = strTemp.replace(/\'+/g, ""); // remove all >'< strTemp = strTemp.replace(/[+/g, ""); // remove all >[< strTemp = strTemp.replace(/]+/g, ""); // remove all >]< if (strTemp !== '') { return false; } else { return true; } } else { return true; } } */