30 seconds of code
Curated collection of useful Javascript snippets that you can understand in 30 seconds or less.
- Use Ctrl + F or command + F to search for a snippet.
- Contributions welcome, please read contribution guide.
Contents
- Anagrams of string (with duplicates)
- Count occurences of a value in array
- Even or odd number
- Fibonacci array generator
- Greatest common divisor (GCD)
- Initialize array with values
- Random number in range
- Randomize order of array
- Redirect to url
- RGB to hexadecimal
- Sort characters in string (alphabetical)
- Sum of array of numbers
- Swap values of two variables
- Unique values of array
- UUID generator
Anagrams of string (with duplicates)
Use recursion.
For each letter in the given string, create all the partial anagrams for the rest of its letters.
Use map() to combine the letter with each partial anagram, then reduce() to combine all anagrams in one array.
Base cases are for string length equal to 2 or 1.
var anagrams = s => {
if(s.length <= 2) return s.length === 2 ? [s, s[1] + s[0]] : [s];
return s.split('').reduce( (a,l,i) => {
anagrams(s.slice(0,i) + s.slice(i+1)).map( v => a.push(l+v) );
return a;
}, []);
}
Count occurences of a value in array
Use filter() to create an array containing only the items with the specified value, count them using length.
var countOccurences = (arr, value) => arr.filter(v => v === value).length;
Even or odd number
Use Math.abs() to extend logic to negative numbers, check using the modulo (%) operator.
Return true if the number is even, false if the number is odd.
var isEven = num => Math.abs(num) % 2 === 0;
Fibonacci array generator
Create an empty array of the specific length, initializing the first two values (0 and 1).
Use reduce() to add values into the array, using the sum of the last two values, except for the first two.
var fibonacci = n =>
Array.apply(null, [0,1].concat(Array(n-2))).reduce(
(acc, val, i) => {
acc.push( i>1 ? acc[i-1]+acc[i-2] : val);
return acc;
},[]);
Greatest common divisor (GCD)
Use recursion.
Base case is when y equals 0. In this case, return x.
Otherwise, return the GCD of y and the remainder of the division x/y.
var gcd = (x , y) => !y ? x : gcd(y, x % y);
Initialize array with values
Use Array(n) to create an array of the desired length, fill(v) to fill it with the desired values.
You can omit v to use a default value of 0.
var initializeArray = (n, v = 0) =>
Array(n).fill(v);
Random number in range
Use Math.random() to generate a random value, map it to the desired range using multiplication.
var randomInRange = (min, max) => Math.random() * (max - min) + min;
Randomize order of array
Use sort() to reorder elements, utilizing Math.random() to randomize the sorting.
var randomizeOrder = arr => arr.sort( (a,b) => Math.random() >= 0.5 ? -1 : 1)
Redirect to URL
Use window.location.href or window.location.replace() to redirect to url.
Pass a second argument to simulate a link click (true - default) or an HTTP redirect (false).
var redirect = (url, asLink = true) =>
asLink ? window.location.href = url : window.location.replace(url);
RGB to hexadecimal
Convert each value to a hexadecimal string, using toString(16), then padStart(2,'0') to get a 2-digit hexadecimal value.
Combine values using join('').
var rgbToHex = (r, g, b) =>
[r,g,b].map( v => v.toString(16).padStart(2,'0')).join('');
Sort characters in string (alphabetical)
Split the string using split(''), sort() utilizing localeCompare(), recombine using join('').
var sortCharactersInString = str =>
str.split('').sort( (a,b) => a.localeCompare(b) ).join('');
Sum of array of numbers
Use reduce() to add each value to an accumulator, initialized with a value of 0.
var sum = arr =>
arr.reduce( (acc , val) => acc + val, 0);
Swap values of two variables
Use array destructuring to swap values between two variables.
[varA, varB] = [varB, varA];
Unique values of array
Use reduce() to accumulate all unique values in an array.
Check if each value has already been added, using indexOf() on the accumulator array.
var uniqueValues = arr =>
arr.reduce( (acc, val) => {
if(acc.indexOf(val) === -1)
acc.push(val);
return acc;
}, []);
UUID generator
Use crypto API to generate a UUID, compliant with RFC4122 version 4.
var uuid = _ =>
( [1e7]+-1e3+-4e3+-8e3+-1e11 ).replace( /[018]/g, c =>
(c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)
)
Credits
Icons made by Smashicons from www.flaticon.com is licensed by CC 3.0 BY.
