├── .gitignore
├── LICENSE
├── README.md
├── app.js
├── index.html
├── package.json
└── snippets
├── accumulate.js
├── all.js
├── allEqual.js
├── arrayToCSV.js
├── arrayToHtmlList.js
├── average.js
├── averageBy.js
├── bottomVisible.js
├── bubbleSort.js
├── bucketSort.js
├── byteSize.js
├── capitalize.js
├── capitalizeEveryWord.js
├── castArray.js
├── compact.js
├── containsWhitespace.js
├── countOccurrences.js
├── currentURL.js
├── dayOfYear.js
├── decapitalize.js
├── deepFlatten.js
├── difference.js
├── differenceBy.js
├── digitize.js
├── drop.js
├── dropRight.js
├── dropRightWhile.js
├── dropWhile.js
├── elementContains.js
├── everyNth.js
├── filterNonUnique.js
├── findKey.js
├── forEachRight.js
├── forOwn.js
├── formToObject.js
├── getBaseURL.js
├── getDaysBetweenDates.js
├── getStyle.js
├── getTimeFromDate.js
├── getType.js
├── getURLParameters.js
├── hasClass.js
├── hasDuplicates.js
├── hashBrowser.js
├── hide.js
├── httpsRedirect.js
├── indexOfAll.js
├── indexOn.js
├── innerHeight.js
├── innerWidth.js
├── insertAfter.js
├── insertBefore.js
├── is.js
├── isAbsoluteURL.js
├── isAfterDate.js
├── isAlpha.js
├── isAlphaNumeric.js
├── isAnagram.js
├── isBeforeDate.js
├── isBrowser.js
├── isBrowserTabFocused.js
├── isDateValid.js
├── isEmailValid.js
├── isLowerCase.js
├── isSameDate.js
├── isSorted.js
├── isUpperCase.js
├── isValidJSON.js
├── join.js
├── maxDate.js
├── maxN.js
├── mergeSort.js
├── minDate.js
├── minN.js
├── pad.js
├── parseCookie.js
├── quickSort.js
├── randomAlphaNumeric.js
├── randomBoolean.js
├── randomHexColorCode.js
├── randomIntArrayInRange.js
├── randomIntegerInRange.js
├── randomItemFromArray.js
├── randomNumberFromArray.js
├── randomNumberFromArrayN.js
├── randomNumberInRange.js
├── redirect.js
├── reverse.js
├── round.js
├── runPromisesInSeries.js
├── selectionSort.js
├── serializeCookie.js
├── serializeForm.js
├── setStyle.js
├── shuffle.js
├── sum.js
├── sumBy.js
├── toHash.js
├── uniqueElements.js
└── without.js
/.gitignore:
--------------------------------------------------------------------------------
1 | .vscode
2 | node_modules
3 | package-lock.json
4 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021-present Mario Laurich
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # 100+ JavaScript Snippets
2 |
3 | Top 100+ JavaScript Snippets für Anfänger. Hiermit möchte ich dir über 100 JavaScript Snippets an die Hand geben um dir das Programmieren als Anfänger zu erleichtern. Viele dieser Snippets werden das ein oder andere Problem lösen. Zu jedem gibt es eine kleine Beschreibung und über Beispiele wird dir die Anwendung erläutert. Happy Coding!
4 |
5 | [](https://youtu.be/QCoxMzk8CMU)
6 |
7 | ## 📺 Playlists
8 |
9 | [Webentwicklung für Anfänger](https://www.youtube.com/playlist?list=PLnqycjkeRGqmrzCAVKOc4RPhFWFMVpZ6x)
10 |
11 | [CSS Tutorials Deutsch](https://www.youtube.com/playlist?list=PLnqycjkeRGqmNb4zay7i46-57KgnO_xcD)
12 |
13 | [JavaScript Tutorials Deutsch](https://www.youtube.com/playlist?list=PLnqycjkeRGqlyZLCc63qMIdkYZhQ9M-Ij)
14 |
15 | [Visual Studio Code Tutorials](https://www.youtube.com/playlist?list=PLnqycjkeRGqmlJvXkxqSvIynlxaiKecPN)
16 |
17 | [Frameworks, Libraries und Tools](https://www.youtube.com/playlist?list=PLnqycjkeRGqnqag9WBK1THbdwsf2E-6cV)
18 |
19 | [Programmieren: Tipps, Ideen, Gedanken und Meinungen](https://www.youtube.com/playlist?list=PLnqycjkeRGqmxW1HaS897rvCapowxbtYH)
20 |
21 | ## Vernetze dich:
22 |
23 | [][website]
24 | [
][youtube]
25 | [
][twitter]
26 | [
][instagram]
27 |
28 |
29 |
30 | ## License
31 |
32 | [MIT](LICENSE)
33 |
34 | [website]: http://programmierenmitmario.de
35 | [twitter]: https://twitter.com/programmierenm
36 | [youtube]: https://youtube.com/programmierenmitmario
37 | [instagram]: https://instagram.com/programmierenm
38 |
--------------------------------------------------------------------------------
/app.js:
--------------------------------------------------------------------------------
1 | import { accumulate } from "./snippets/accumulate.js";
2 |
3 | let sums = accumulate(1, 2, 3, 4);
4 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
lorem ipsum
"); 11 | //lorem ipsum
12 | */ 13 | -------------------------------------------------------------------------------- /snippets/insertBefore.js: -------------------------------------------------------------------------------- 1 | /* 2 | Dieses Snippet kann verwendet werden, um einen HTML-String vor einem bestimmten Element einzufügen. 3 | */ 4 | 5 | export const insertBefore = (element, htmlString) => 6 | element.insertAdjacentHTML("beforebegin", htmlString); 7 | 8 | /* 9 | Beispiele: 10 | insertBefore(document.getElementById('myId'), 'lorem ipsum
'); 11 | //lorem ipsum
12 | */ 13 | -------------------------------------------------------------------------------- /snippets/is.js: -------------------------------------------------------------------------------- 1 | /* 2 | Dieses Snippet kann verwendet werden, um zu überprüfen, ob ein Wert von einem bestimmten Typ ist. 3 | */ 4 | 5 | export const is = (type, val) => 6 | ![, null].includes(val) && val.constructor === type; 7 | 8 | /* 9 | Beispiele: 10 | is(Array, [1]); // true 11 | is(RegExp, /./g); // true 12 | is(String, ''); // true 13 | is(String, 12); // false 14 | is(Number, 1); // true 15 | is(Boolean, true); // true 16 | */ 17 | -------------------------------------------------------------------------------- /snippets/isAbsoluteURL.js: -------------------------------------------------------------------------------- 1 | /* 2 | Überprüft, ob die angegebene Zeichenfolge eine absolute URL ist. 3 | */ 4 | 5 | export const isAbsoluteURL = (str) => /^[a-z][a-z0-9+.-]*:/.test(str); 6 | 7 | /* 8 | Beispiele: 9 | isAbsoluteURL('https://google.de'); // true 10 | isAbsoluteURL('http://www.meinedomain.de'); // true 11 | isAbsoluteURL('/hallo/welt'); // false 12 | */ 13 | -------------------------------------------------------------------------------- /snippets/isAfterDate.js: -------------------------------------------------------------------------------- 1 | /* 2 | Mit diesem Snippet kann überprüft werden, ob ein Datum nach einem anderen Datum liegt. 3 | */ 4 | 5 | export const isAfterDate = (dateA, dateB) => dateA > dateB; 6 | 7 | /* 8 | Beispiele: 9 | isAfterDate(new Date(2015, 10, 21), new Date(2010, 10, 23)); // true 10 | */ 11 | -------------------------------------------------------------------------------- /snippets/isAlpha.js: -------------------------------------------------------------------------------- 1 | /* 2 | Überprüft, ob eine Zeichenfolge nur Buchstaben enthält. 3 | */ 4 | 5 | export const isAlpha = (str) => /^[a-zA-Z]*$/.test(str); 6 | 7 | /* 8 | Beispiele: 9 | isAlpha('BeispielAugabe'); // true 10 | isAlpha('Das wird nix'); // false (Leerzeichen sind keine Buchstaben) 11 | isAlpha('123'); // false 12 | */ 13 | -------------------------------------------------------------------------------- /snippets/isAlphaNumeric.js: -------------------------------------------------------------------------------- 1 | /* 2 | Überprüft, ob eine Zeichenfolge nur alphanumerische Zeichen enthält. 3 | */ 4 | 5 | export const isAlphaNumeric = (str) => /^[a-z0-9]+$/gi.test(str); 6 | 7 | /* 8 | Beispiele: 9 | isAlphaNumeric('Hallo123'); // true 10 | isAlphaNumeric('123'); // true 11 | isAlphaNumeric('Hello 123'); // false (Leerzeichen sind sind Alphanumerisch) 12 | isAlphaNumeric('#%$hallo'); // false 13 | */ 14 | -------------------------------------------------------------------------------- /snippets/isAnagram.js: -------------------------------------------------------------------------------- 1 | /* 2 | Mit diesem Snippet kann überprüft werden, ob ein bestimmter String ein Anagramm von einem anderen String ist. 3 | */ 4 | 5 | export const isAnagram = (str1, str2) => { 6 | const normalize = (str) => 7 | str 8 | .toLowerCase() 9 | .replace(/[^a-z0-9]/gi, "") 10 | .split("") 11 | .sort() 12 | .join(""); 13 | return normalize(str1) === normalize(str2); 14 | }; 15 | 16 | /* 17 | Beispiele: 18 | isAnagram('Ampel', 'Palme'); // true 19 | */ 20 | -------------------------------------------------------------------------------- /snippets/isBeforeDate.js: -------------------------------------------------------------------------------- 1 | /* 2 | Mit diesem Snippet kann überprüft werden, ob ein Datum vor einem anderen Datum liegt. 3 | */ 4 | 5 | export const isBeforeDate = (dateA, dateB) => dateA < dateB; 6 | 7 | /* 8 | Beispiele: 9 | isBeforeDate(new Date(2010, 10, 21), new Date(2015, 11, 10)); // true 10 | */ 11 | -------------------------------------------------------------------------------- /snippets/isBrowser.js: -------------------------------------------------------------------------------- 1 | /* 2 | Anhand dieses Snippets kann festgestellt werden, ob es sich bei der aktuellen Laufzeitumgebung um einen Browser handelt. Dies ist hilfreich, um Fehler beim ausführen von Frontend-Modulen auf dem Server (Node.js) zu vermeiden. 3 | */ 4 | 5 | export const isBrowser = () => 6 | ![typeof window, typeof document].includes("undefined"); 7 | 8 | /* 9 | Beispiele: 10 | isBrowser(); // true (browser) 11 | isBrowser(); // false (Node) 12 | */ 13 | -------------------------------------------------------------------------------- /snippets/isBrowserTabFocused.js: -------------------------------------------------------------------------------- 1 | /* 2 | Dieses Snippet kann verwendet werden, um festzustellen, ob der Browser-Tab fokussiert ist. 3 | */ 4 | 5 | export const isBrowserTabFocused = () => !document.hidden; 6 | 7 | /* 8 | Beispiele: 9 | isBrowserTabFocused(); // true 10 | */ 11 | -------------------------------------------------------------------------------- /snippets/isDateValid.js: -------------------------------------------------------------------------------- 1 | /* 2 | Überprüft, ob aus den angegebenen Werten ein gültiges Datumsobjekt erstellt werden kann. 3 | */ 4 | 5 | export const isDateValid = (...val) => 6 | !Number.isNaN(new Date(...val).valueOf()); 7 | 8 | /* 9 | Beispiele: 10 | isDateValid('October 21, 2015 09:24:00'); // true 11 | isDateValid('2015-10-21T09:24:00'); // true 12 | isDateValid('2015-10-21 T09:24:00'); // false 13 | isDateValid('Quark'); // false 14 | isDateValid(2015, 10, 21); // true 15 | isDateValid(2015, 10, 21, 'Quark'); // false 16 | isDateValid({}); // false 17 | */ 18 | -------------------------------------------------------------------------------- /snippets/isEmailValid.js: -------------------------------------------------------------------------------- 1 | /* 2 | Prüft ob die angegebene Zeichenkette eine Email ist. 3 | */ 4 | 5 | export const isEmailValid = (email) => 6 | /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(email); 7 | 8 | /* 9 | Beispiele: 10 | isEmailValid(test@email.de) // true 11 | */ 12 | -------------------------------------------------------------------------------- /snippets/isLowerCase.js: -------------------------------------------------------------------------------- 1 | /* 2 | Dieses Snippet kann verwendet werden, um festzustellen, ob eine Zeichenfolge klein geschrieben ist. 3 | */ 4 | 5 | export const isLowerCase = (str) => str === str.toLowerCase(); 6 | 7 | /* 8 | Beispiele: 9 | isLowerCase('abc'); // true 10 | isLowerCase('a3@$'); // true 11 | isLowerCase('Max'); // false 12 | */ 13 | -------------------------------------------------------------------------------- /snippets/isSameDate.js: -------------------------------------------------------------------------------- 1 | /* 2 | Mit diesem Snippet kann überprüft werden, ob zwei Datumsangaben gleich sind. 3 | */ 4 | 5 | export const isSameDate = (dateA, dateB) => 6 | dateA.toISOString() === dateB.toISOString(); 7 | 8 | /* 9 | Beispiele: 10 | isSameDate(new Date(2015, 10, 20), new Date(2015, 10, 20)); // true 11 | */ 12 | -------------------------------------------------------------------------------- /snippets/isSorted.js: -------------------------------------------------------------------------------- 1 | /* 2 | Prüft, ob ein numerisches Array sortiert ist. 3 | */ 4 | 5 | export const isSorted = (array) => { 6 | if (array.length <= 1) return 0; 7 | const direction = array[1] - array[0]; 8 | for (let i = 2; i < array.length; i++) { 9 | if ((array[i] - array[i - 1]) * direction < 0) return 0; 10 | } 11 | return Math.sign(direction); 12 | }; 13 | 14 | /* 15 | Beispiele: 16 | isSorted([0, 1, 2, 3]); // 1 17 | isSorted([4, 3, 2]); // -1 18 | isSorted([4, 3, 5]); // 0 19 | isSorted([4]); // 0 20 | */ 21 | -------------------------------------------------------------------------------- /snippets/isUpperCase.js: -------------------------------------------------------------------------------- 1 | /* 2 | Dieses Snippet kann verwendet werden, um zu überprüfen, ob ein String in Großbuchstaben geschrieben ist. 3 | */ 4 | 5 | export const isUpperCase = (str) => str === str.toUpperCase(); 6 | 7 | /* 8 | Beispiele: 9 | isUpperCase('ABC'); // true 10 | isLowerCase('A3@$'); // true 11 | isLowerCase('mAx'); // false 12 | */ 13 | -------------------------------------------------------------------------------- /snippets/isValidJSON.js: -------------------------------------------------------------------------------- 1 | /* 2 | Mit diesem Snippet kann überprüft werden, ob eine Zeichenfolge ein gültiges JSON ist. 3 | */ 4 | 5 | export const isValidJSON = (str) => { 6 | try { 7 | JSON.parse(str); 8 | return true; 9 | } catch (e) { 10 | return false; 11 | } 12 | }; 13 | 14 | /* 15 | Beispiele: 16 | isValidJSON('{"name":"Max","age":20}'); // true 17 | isValidJSON('{"name":"Max",age:"20"}'); // false 18 | */ 19 | -------------------------------------------------------------------------------- /snippets/join.js: -------------------------------------------------------------------------------- 1 | /* 2 | Verbindet alle Elemente eines Arrays zu einem String und gibt diesen String zurück. Verwendet ein Trennzeichen und ein Endtrennzeichen. 3 | */ 4 | 5 | export const join = (array, separator = ", ", end = separator) => 6 | array.reduce( 7 | (acc, val, i) => 8 | i === array.length - 2 9 | ? acc + val + end 10 | : i === array.length - 1 11 | ? acc + val 12 | : acc + val + separator, 13 | "" 14 | ); 15 | 16 | /* 17 | Beispiele: 18 | join(['Apfel', 'Birne', 'Banane', 'Erdbeere'],', ',' & '); // 'Apfel, Birne, Banane & Erdbeere' 19 | join(['Apfel', 'Birne', 'Banane', 'Erdbeere'], ', '); // 'Apfel, Birne, Banane, Erdbeere' 20 | join(['Apfel', 'Birne', 'Banane', 'Erdbeere']); // 'Apfel, Birne, Banane, Erdbeere' 21 | */ 22 | -------------------------------------------------------------------------------- /snippets/maxDate.js: -------------------------------------------------------------------------------- 1 | /* 2 | Dieses Snippet kann verwendet werden, um das neueste Datum zu erhalten. 3 | */ 4 | 5 | export const maxDate = (...dates) => new Date(Math.max.apply(null, ...dates)); 6 | 7 | /* 8 | Beispiele: 9 | const array = [ 10 | new Date("2017-04-13"), 11 | new Date("2018-02-12"), 12 | new Date("2016-01-10"), 13 | new Date("2016-01-09") 14 | ]; 15 | maxDate(array); // 2018-02-12T00:00:00.000Z 16 | */ 17 | -------------------------------------------------------------------------------- /snippets/maxN.js: -------------------------------------------------------------------------------- 1 | /* 2 | Gibt die n maximalen Elemente aus dem bereitgestellten Array zurück. 3 | */ 4 | 5 | export const maxN = (array, n = 1) => 6 | [...array].sort((a, b) => b - a).slice(0, n); 7 | 8 | /* 9 | Beispiele: 10 | maxN([1, 2, 3, 4]); // [4] 11 | maxN([1, 2, 3, 4], 2); // [4, 3] 12 | */ 13 | -------------------------------------------------------------------------------- /snippets/mergeSort.js: -------------------------------------------------------------------------------- 1 | /* 2 | Sortiert ein Array von Zahlen mit dem Mergesort-Algorithmus. 3 | */ 4 | 5 | export const mergeSort = (array) => { 6 | if (array.length < 2) return array; 7 | const mid = Math.floor(array.length / 2); 8 | const l = mergeSort(array.slice(0, mid)); 9 | const r = mergeSort(array.slice(mid, array.length)); 10 | return Array.from({ length: l.length + r.length }, () => { 11 | if (!l.length) return r.shift(); 12 | else if (!r.length) return l.shift(); 13 | else return l[0] > r[0] ? r.shift() : l.shift(); 14 | }); 15 | }; 16 | 17 | /* 18 | Beispiele: 19 | mergeSort([5, 1, 4, 2, 3]); // [1, 2, 3, 4, 5] 20 | */ 21 | -------------------------------------------------------------------------------- /snippets/minDate.js: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | */ 4 | 5 | export const minDate = (...dates) => new Date(Math.min.apply(null, ...dates)); 6 | 7 | /* 8 | Beispiele: 9 | const array = [ 10 | new Date("2017-04-13"), 11 | new Date("2018-02-12"), 12 | new Date("2016-01-10"), 13 | new Date("2016-01-09") 14 | ]; 15 | minDate(array); // 2016-01-09T00:00:00.000Z 16 | */ 17 | -------------------------------------------------------------------------------- /snippets/minN.js: -------------------------------------------------------------------------------- 1 | /* 2 | Gibt die n minimalen Elemente aus dem bereitgestellten Array zurück. 3 | */ 4 | 5 | export const minN = (array, n = 1) => 6 | [...array].sort((a, b) => a - b).slice(0, n); 7 | 8 | /* 9 | Beispiele: 10 | minN([1, 2, 3, 4]); // [1] 11 | minN([1, 2, 3, 4], 2); // [1, 2] 12 | */ 13 | -------------------------------------------------------------------------------- /snippets/pad.js: -------------------------------------------------------------------------------- 1 | /* 2 | Dieses Snippet kann verwendet werden, um eine Zeichenfolge auf beiden Seiten mit einem angegebenen Zeichen aufzufüllen, wenn sie kürzer als die angegebene Länge ist. 3 | */ 4 | 5 | export const pad = (str, length, char = " ") => 6 | str.padStart((str.length + length) / 2, char).padEnd(length, char); 7 | 8 | /* 9 | Beispiele: 10 | pad('bob', 8); // ' bob ' 11 | pad(String(42), 6, '0'); // '004200' 12 | pad('oliver', 3); // 'oliver' 13 | */ 14 | -------------------------------------------------------------------------------- /snippets/parseCookie.js: -------------------------------------------------------------------------------- 1 | /* 2 | Analysiert eine HTTP-Cookie-Header-Zeichenfolge und gibt ein Objekt mit allen Key-Value-Pairs zurück. 3 | */ 4 | 5 | export const parseCookie = (str) => 6 | str 7 | .split(";") 8 | .map((v) => v.split("=")) 9 | .reduce((acc, v) => { 10 | acc[decodeURIComponent(v[0].trim())] = decodeURIComponent(v[1].trim()); 11 | return acc; 12 | }, {}); 13 | 14 | /* 15 | Beispiele: 16 | parseCookie('car=opel; speed=220%20km%2Fh');// { car: 'opel', speed: '220 km/h' } 17 | */ 18 | -------------------------------------------------------------------------------- /snippets/quickSort.js: -------------------------------------------------------------------------------- 1 | /* 2 | Sortiert ein Array von Zahlen mit dem Quicksort-Algorithmus. 3 | */ 4 | 5 | export const quickSort = (array) => { 6 | const a = [...array]; 7 | if (a.length < 2) return a; 8 | const pivotIndex = Math.floor(array.length / 2); 9 | const pivot = a[pivotIndex]; 10 | const [lo, hi] = a.reduce( 11 | (acc, val, i) => { 12 | if (val < pivot || (val === pivot && i != pivotIndex)) { 13 | acc[0].push(val); 14 | } else if (val > pivot) { 15 | acc[1].push(val); 16 | } 17 | return acc; 18 | }, 19 | [[], []] 20 | ); 21 | return [...quickSort(lo), pivot, ...quickSort(hi)]; 22 | }; 23 | 24 | /* 25 | Beispiele: 26 | quickSort([1, 6, 1, 5, 3, 2, 1, 4]); // [1, 1, 1, 2, 3, 4, 5, 6] 27 | */ 28 | -------------------------------------------------------------------------------- /snippets/randomAlphaNumeric.js: -------------------------------------------------------------------------------- 1 | /* 2 | Erzeugt eine zufällige Zeichenfolge mit der angegebenen Länge. 3 | */ 4 | 5 | export const randomAlphaNumeric = (length) => { 6 | let s = ""; 7 | Array.from({ length }).some(() => { 8 | s += Math.random().toString(36).slice(2); 9 | return s.length >= length; 10 | }); 11 | return s.slice(0, length); 12 | }; 13 | 14 | /* 15 | Beispiele: 16 | randomAlphaNumeric(5); // '5ukep' 17 | */ 18 | -------------------------------------------------------------------------------- /snippets/randomBoolean.js: -------------------------------------------------------------------------------- 1 | /* 2 | Erzeugt zufällig true oder false. 3 | */ 4 | 5 | export const randomBoolean = () => Math.random() >= 0.5; 6 | 7 | /* 8 | Beispiele: 9 | randomBoolean(); // true 10 | */ 11 | -------------------------------------------------------------------------------- /snippets/randomHexColorCode.js: -------------------------------------------------------------------------------- 1 | /* 2 | Dieses Snippet kann verwendet werden, um einen zufälligen hexadezimalen Farbcode zu generieren. 3 | */ 4 | 5 | export const randomHexColorCode = () => { 6 | let n = (Math.random() * 0xfffff * 1000000).toString(16); 7 | return "#" + n.slice(0, 6); 8 | }; 9 | 10 | /* 11 | Beispiele: 12 | randomHexColorCode(); // "#ed549e" 13 | */ 14 | -------------------------------------------------------------------------------- /snippets/randomIntArrayInRange.js: -------------------------------------------------------------------------------- 1 | /* 2 | Dieses Snippet kann verwendet werden, um ein Array mit n zufälligen ganzen Zahlen in einem angegebenen Bereich zu generieren. 3 | */ 4 | 5 | export const randomIntArrayInRange = (min, max, n = 1) => 6 | Array.from( 7 | { length: n }, 8 | () => Math.floor(Math.random() * (max - min + 1)) + min 9 | ); 10 | 11 | /* 12 | Beispiele: 13 | randomIntArrayInRange(10, 45, 10); // [ 28, 15, 12, 44, 29, 32, 40, 23, 22, 11 ] 14 | */ 15 | -------------------------------------------------------------------------------- /snippets/randomIntegerInRange.js: -------------------------------------------------------------------------------- 1 | /* 2 | Dieses Snippet kann verwendet werden, um eine zufällige ganze Zahl in einem bestimmten Bereich zu generieren. 3 | */ 4 | 5 | export const randomIntegerInRange = (min, max) => 6 | Math.floor(Math.random() * (max - min + 1)) + min; 7 | 8 | /* 9 | Beispiele: 10 | randomIntegerInRange(1, 10); // 7 11 | */ 12 | -------------------------------------------------------------------------------- /snippets/randomItemFromArray.js: -------------------------------------------------------------------------------- 1 | /* 2 | Dieses Snippet kann verwendet werden, um ein zufälliges Item aus einem Array zurückzugeben. 3 | */ 4 | 5 | export const randomItemFromArray = (array) => 6 | array[Math.floor(Math.random() * array.length)]; 7 | 8 | /* 9 | Beispiele: 10 | randomItemFromArray([10, "Max", "15", 3, "Hallo Welt"]) // "Max" 11 | */ 12 | -------------------------------------------------------------------------------- /snippets/randomNumberFromArray.js: -------------------------------------------------------------------------------- 1 | /* 2 | Dieses Snippet kann verwendet werden, um eine Zufallszahl aus einem Array zu erhalten. 3 | */ 4 | 5 | export const randomNumberFromArray = (arr) => 6 | arr[Math.floor(Math.random() * arr.length)]; 7 | 8 | /* 9 | Beispiele: 10 | randomNumberFromArray([3, 7, 9, 11]); // 9 11 | */ 12 | -------------------------------------------------------------------------------- /snippets/randomNumberFromArrayN.js: -------------------------------------------------------------------------------- 1 | /* 2 | Dieses Snippet kann verwendet werden, um mehrere Zufallszahlen aus einem Array zu erhalten. 3 | */ 4 | 5 | export const randomNumberFromArrayN = ([...arr], n = 1) => { 6 | let m = arr.length; 7 | while (m) { 8 | const i = Math.floor(Math.random() * m--); 9 | [arr[m], arr[i]] = [arr[i], arr[m]]; 10 | } 11 | return arr.slice(0, n); 12 | }; 13 | 14 | /* 15 | Beispiele: 16 | randomNumberFromArrayN([1, 2, 3], 2); // [3,1] 17 | randomNumberFromArrayN([1, 2, 3], 4); // [2,3,1] 18 | */ 19 | -------------------------------------------------------------------------------- /snippets/randomNumberInRange.js: -------------------------------------------------------------------------------- 1 | /* 2 | Dieses Snippet kann verwendet werden, um eine Zufallszahl in einem bestimmten Bereich zurückzugeben. 3 | */ 4 | 5 | export const randomNumberInRange = (min, max) => 6 | Math.random() * (max - min) + min; 7 | 8 | /* 9 | randomNumberInRange(1, 10); // 2.756429634902913 10 | */ 11 | -------------------------------------------------------------------------------- /snippets/redirect.js: -------------------------------------------------------------------------------- 1 | /* 2 | Dieses Snippet kann verwendet werden, um eine Weiterleitung zu einer angegebenen URL durchzuführen. 3 | */ 4 | 5 | export const redirect = (url, asLink = true) => 6 | asLink ? (window.location.href = url) : window.location.replace(url); 7 | 8 | /* 9 | Beispiele: 10 | redirect('https://google.com'); 11 | */ 12 | -------------------------------------------------------------------------------- /snippets/reverse.js: -------------------------------------------------------------------------------- 1 | /* 2 | Dieses Snippet kann verwendet werden, um eine Zeichenfolge umzukehren. 3 | */ 4 | 5 | export const reverseString = (str) => [...str].reverse().join(""); 6 | 7 | /* 8 | Beispiele: 9 | reverseString('max'); // 'xam' 10 | */ 11 | -------------------------------------------------------------------------------- /snippets/round.js: -------------------------------------------------------------------------------- 1 | /* 2 | Dieses Snippet kann verwendet werden, um eine Zahl auf eine bestimmte Anzahl von Stellen zu runden. 3 | */ 4 | 5 | export const round = (n, decimals = 0) => 6 | Number(`${Math.round(`${n}e${decimals}`)}e-${decimals}`); 7 | 8 | /* 9 | Beispiele: 10 | round(1.005, 2); // 1.01 11 | round(1.255, 1); // 1.3 12 | */ 13 | -------------------------------------------------------------------------------- /snippets/runPromisesInSeries.js: -------------------------------------------------------------------------------- 1 | /* 2 | Dieses Snippet kann verwendet werden, um eine Reihe von Promises in Serie auszuführen. 3 | */ 4 | 5 | export const runPromisesInSeries = (ps) => 6 | ps.reduce((p, next) => p.then(next), Promise.resolve()); 7 | 8 | /* 9 | Beispiele: 10 | const delay = d => new Promise(r => setTimeout(r, d)); 11 | runPromisesInSeries([() => delay(1000), () => delay(2000)]); 12 | // Führt jedes Promise nacheinander aus und dauert insgesamt 3 Sekunden. 13 | */ 14 | -------------------------------------------------------------------------------- /snippets/selectionSort.js: -------------------------------------------------------------------------------- 1 | /* 2 | Sortiert ein Array von Zahlen mithilfe des Selectionsort-Algorithmus. 3 | */ 4 | 5 | export const selectionSort = (array) => { 6 | const a = [...array]; 7 | for (let i = 0; i < a.length; i++) { 8 | const min = a 9 | .slice(i + 1) 10 | .reduce((acc, val, j) => (val < a[acc] ? j + i + 1 : acc), i); 11 | if (min !== i) [a[i], a[min]] = [a[min], a[i]]; 12 | } 13 | return a; 14 | }; 15 | 16 | /* 17 | Beispiele: 18 | selectionSort([5, 1, 4, 2, 3]); // [1, 2, 3, 4, 5] 19 | */ 20 | -------------------------------------------------------------------------------- /snippets/serializeCookie.js: -------------------------------------------------------------------------------- 1 | /* 2 | Serialisiert ein Wertepaar in eine HTTP-Cookie-Header-Zeichenfolge. 3 | */ 4 | 5 | export const serializeCookie = (name, val) => 6 | `${encodeURIComponent(name)}=${encodeURIComponent(val)}`; 7 | 8 | /* 9 | Beispiele: 10 | serializeCookie('car', 'opel'); // 'car=opel' 11 | */ 12 | -------------------------------------------------------------------------------- /snippets/serializeForm.js: -------------------------------------------------------------------------------- 1 | /* 2 | Codiert alle Werte eines Formulars zu eine URL-codierte Zeichenkette, welche als GET Parameter dienen können. 3 | */ 4 | 5 | export const serializeForm = (form) => 6 | Array.from(new FormData(form), (field) => 7 | field.map(encodeURIComponent).join("=") 8 | ).join("&"); 9 | 10 | /* 11 | Beispiele: 12 | serializeForm(document.querySelector('#form')); // email=test%40email.de&name=Max%20Mustermann 13 | */ 14 | -------------------------------------------------------------------------------- /snippets/setStyle.js: -------------------------------------------------------------------------------- 1 | /* 2 | Legt den Wert einer CSS-Eigenschaft für das angegebene HTML-Element fest. 3 | */ 4 | 5 | export const setStyle = (element, rule, value) => (element.style[rule] = value); 6 | 7 | /* 8 | Beispiele: 9 | setStyle(document.querySelector('p'), 'font-size', '16px'); 10 | */ 11 | -------------------------------------------------------------------------------- /snippets/shuffle.js: -------------------------------------------------------------------------------- 1 | /* 2 | Verändert die Reihenfolge der Werte eines Arrays in zufälliger Reihenfolge und gibt ein neues Array zurück. 3 | */ 4 | 5 | export const shuffle = ([...array]) => { 6 | let m = array.length; 7 | while (m) { 8 | const i = Math.floor(Math.random() * m--); 9 | [array[m], array[i]] = [array[i], array[m]]; 10 | } 11 | return array; 12 | }; 13 | 14 | /* 15 | Beispiele: 16 | shuffle([1, 2, 3]); // [2, 3, 1] 17 | */ 18 | -------------------------------------------------------------------------------- /snippets/sum.js: -------------------------------------------------------------------------------- 1 | /* 2 | Berechnet die Summe von zwei oder mehr Zahlen, auch welche die sich in einem Array befinden. 3 | */ 4 | 5 | export const sum = (...arr) => [...arr].reduce((acc, val) => acc + val, 0); 6 | 7 | /* 8 | Beispiele: 9 | sum(1, 2, 3, 4); // 10 10 | sum(...[1, 2, 3, 4]); // 10 11 | */ 12 | -------------------------------------------------------------------------------- /snippets/sumBy.js: -------------------------------------------------------------------------------- 1 | /* 2 | Berechnet die Summe eines Arrays, nachdem jedes Element mithilfe der bereitgestellten Funktion einem Wert zugeordnet wurde. 3 | */ 4 | 5 | export const sumBy = (array, fn) => 6 | array 7 | .map(typeof fn === "function" ? fn : (val) => val[fn]) 8 | .reduce((acc, val) => acc + val, 0); 9 | 10 | /* 11 | Beispiele: 12 | sumBy([{ n: 4 }, { n: 2 }, { n: 8 }, { n: 6 }], x => x.n); // 20 13 | sumBy([{ n: 4 }, { n: 2 }, { n: 8 }, { n: 6 }], 'n'); // 20 14 | */ 15 | -------------------------------------------------------------------------------- /snippets/toHash.js: -------------------------------------------------------------------------------- 1 | /* 2 | Reduziert ein gegebenes Array in einen Wert-Hash (Keyed Data Store). 3 | */ 4 | 5 | export const toHash = (object, key) => 6 | Array.prototype.reduce.call( 7 | object, 8 | (acc, data, index) => ((acc[!key ? index : data[key]] = data), acc), 9 | {} 10 | ); 11 | 12 | /* 13 | Beispiel: 14 | toHash([4, 3, 2, 1]); // { 0: 4, 1: 3, 2: 2, 3: 1 } 15 | 16 | Komplexes Beispiel: 17 | let users = [ 18 | { id: 1, name: 'Max' }, 19 | { id: 2, name: 'Tina' }, 20 | { id: 3, name: 'Bob' }, 21 | ]; 22 | let managers = [ 23 | { id: 1, name: 'Mario', employees: [2, 3] } 24 | ]; 25 | 26 | // Wir verwenden hier toHash, weil wir eine bindbare Referenz erzeugen wollen 27 | managers.forEach( 28 | manager => 29 | (manager.employees = manager.employees.map(function(id) { 30 | return this[id]; 31 | }, toHash(users, 'id'))) 32 | ); 33 | 34 | managers; // [{ id: 1, name: 'Mario', employees: [{id: 2, name: 'Tina'}, {id: 3, name: 'Bob'} ]}] 35 | */ 36 | -------------------------------------------------------------------------------- /snippets/uniqueElements.js: -------------------------------------------------------------------------------- 1 | /* 2 | Findet alle eindeutigen Werte in einem Array. 3 | */ 4 | 5 | export const uniqueElements = (array) => [...new Set(array)]; 6 | 7 | /* 8 | Beispiele: 9 | uniqueElements([1, 2, 2, 3, 4, 4, 5]); // [1, 2, 3, 4, 5] 10 | */ 11 | -------------------------------------------------------------------------------- /snippets/without.js: -------------------------------------------------------------------------------- 1 | /* 2 | Filtert die Elemente eines Arrays heraus, die einen der angegebenen Werte aufweisen. 3 | */ 4 | 5 | export const without = (array, ...args) => 6 | array.filter((v) => !args.includes(v)); 7 | 8 | /* 9 | Beispiele: 10 | without([2, 1, 2, 3], 1, 2); // [3] 11 | */ 12 | --------------------------------------------------------------------------------