Original: Chalarangelo: IT168
Https://github.com/Chalarangelo/30-seconds-of-code#anagrams-of-string-with-duplicates
The project, which comes from GitHub user Chalarangelo, now has more than 5,000 star on GitHub and has carefully collected up to 48 useful JavaScript snippets, and the user's code allows programmers to understand these often in 30 seconds or less Use the underlying algorithm to see what these JavaScript code conveys!
Anagrams of string (with duplicates)
Use recursion. For each letter in a given string, create a crossword puzzle for the letter. Use map () to combine the letters with each part of the puzzle, and then use reduce () to combine all the crossword puzzles into an array, the most basic being the length of the string equals 2 or 1.
Const ANAGRAMS = str = = {
if (str.length <= 2) return str.length = = 2? [STR, str[1] + str[0]]: [STR];
Return Str.split ("). Reduce ((ACC, letter, i) = =
Acc.concat (anagrams (str.slice (0, I) + str.slice (i + 1)). Map (val = letter + val)), []);
};
Anagrams (' abc ')--[' ABC ', ' ACB ', ' bac ', ' BCA ', ' cab ', ' CBA ']
Array average
Use reduce () to add each value to the accumulator with an initial value of 0 and the sum divided by the array length.
Const AVERAGE = arr = Arr.reduce ((ACC, val) = = acc + val, 0)/arr.length;
Average ([2])
Capitalize the first letter of each word
Use replace () to match the first character of each word, and use toUpperCase () to capitalize it.
Const Capitalizeeveryword = str = = Str.replace (/\b[a-z]/g, char = Char.touppercase ());
Capitalizeeveryword (' Hello world! '), ' Hello world! '
Capitalize first letter
Use Slice (0,1) and touppercase () to capitalize the first letter, slice (1) to get the remainder of the string. Omit the lowerrest parameter to keep the rest of the string intact, or set it to true to convert to lowercase. (Note: This is not the same thing as the previous example)
Const CAPITALIZE = (str, lowerrest = false) = =
Str.slice (0, 1). toUpperCase () + (lowerrest? Str.slice (1). toLowerCase (): Str.slice (1));
Capitalize (' MyName ', true), ' MyName '
Check palindrome
Converts a string to toLowerCase () and uses replace () to remove non-alphabetic characters from it. It then converts it to toLowerCase (), Splits (") into individual characters, reverse (), Joins ("), compares it to the original non-inverted string, and converts it to toLowerCase ().
Const Palindrome = str = = {
Const S = str.tolowercase (). Replace (/[\w_]/g, ");
return s = = = S.split ("). Reverse (). Join (');
}
Palindrome (' Taco cat '), true
Count occurrences of values in an array
Use reduce () to increment the counter each time a specific value in the array is encountered.
Const Countoccurrences = (arr, value) = Arr.reduce ((A, v) = = = = = value, a + 1:a + 0, 0);
Countoccurrences ([1,1,2,1,2,3], 1), 3
Current URL
Use Window.location.href to get the current URL.
Const Currenturl = _ = = Window.location.href;
Currenturl (), ' https://google.com '
Curry
Use recursion. If the supplied parameter (args) is sufficient, the transfer function f is called, otherwise a curried function f is returned.
Const CURRY = (FN, arity = fn.length, ... args) = =
arity <= Args.length
? fn (.... args)
: Curry.bind (NULL, FN, arity, ... args);
Curry (Math.pow) (2) (1024)
Curry (Math.min, 3) (2) (2)
Deep Flatten Array
Using recursion, reduce () is used to get all elements that are not arrays, flatten each element is an array.
Const Deepflatten = arr =
Arr.reduce ((A, V) = A.concat (Array.isarray (v), Deepflatten (v): v), []);
Deepflatten ([1,[2],[[3],4],5]), [1,2,3,4,5]
The difference between arrays
Create a set from B, and then use Array.filter () on a to keep only the values not contained in B.
Const DIFFERENCE = (A, b) = = {Const S = new Set (b); return a.filter (x =!s.has (x));};
Difference ([3], [[+]])
Distance between two points
Use Math.hypot () to calculate Euclidean distance between two points.
Const DISTANCE = (x0, y0, x1, y1) = Math.hypot (x1-x0, y1-y0);
Distance (2,3), 2.23606797749979
Can be divisible by number
Use the modulo operator (%) to check if the remainder equals 0.
Const ISDIVISIBLE = (dividend, divisor) = dividend% divisor = = 0;
Isdivisible (6,3)-True
Escaping regular expressions
Use replace () to escape special characters.
Const ESCAPEREGEXP = str = = Str.replace (/[.*+?^${} () |[ \]\\]/g, ' \\$& ');
Escaperegexp (' (test) '), \ \ (test\\)
Even or odd
Use Math.Abs () to extend the logic to negative numbers and check using the modulo (%) operator. Returns true if the number is even, or false if the number is odd.
Const ISEVEN = num = num% 2 = = = 0;
IsEven (3), False
Factorial
Use recursion. If n is less than or equal to 1, 1 is returned. Otherwise, the product of the factorial of N and N-1 is returned.
const FACTORIAL = n + = n <= 1? 1:n * factorial (n-1);
Factorial (6)-720
Fibonacci Array Generator
Creates an empty array of a specific length, initializing the first two values (0 and 1). Use Array.reduce () to add a value to the array, followed by a number equal to the preceding two digits plus (except for the first two).
Const FIBONACCI = n =
Array (n). Fill (0). Reduce ((ACC, val, i) = Acc.concat (i > 1 acc[i-1] + acc[i-2]: i), []);
Fibonacci (5), [0,1,1,2,3]
Filter non-unique values in an array
Use Array.filter () for arrays that contain only unique values.
Const Filternonunique = arr = Arr.filter (i = arr.indexof (i) = = = Arr.lastindexof (i));
Filternonunique ([1,2,2,3,4,4,5]), [1,3,5]
Flatten array
Use reduce () to get all the elements in the array and use CONCAT () to make them flatten.
Const FLATTEN = arr = Arr.reduce ((A, V) = A.concat (v), []);
Flatten ([1,[2],3,4]), [1,2,3,4]
Get the maximum value from the array
Use Math.max () with the spread operator (...). ) together to get the maximum value in the array.
Const ARRAYMAX = arr. Math.max (... arr.);
ArrayMax ([1, 5]), 10
Get the minimum value from the array
Use Math.min () with the spread operator (...). ) to combine to get the minimum value in the array.
Const ARRAYMIN = arr. Math.min (... arr.);
Arraymin ([1, 5]), 1
Get scroll position
If defined, use Pagexoffset and pageYOffset, otherwise use scrollleft and scrolltop to omit the El to use the default value of window.
Const GETSCROLLPOS = (el = window) = =
({x: (el.pagexoffset!== undefined)? El.pageXOffset:el.scrollLeft,
Y: (el.pageyoffset!== undefined)? EL.PAGEYOFFSET:EL.SCROLLTOP});
GetScrollPos (), {x:0, y:200}
Greatest common divisor (GCD)
Use recursion. The basic situation is when y equals 0 o'clock. In this case, the x is returned. Otherwise, returns the GCD of Y and the remainder of the X/I.
Const GCD = (x, y) = =!y? X:GCD (y, x% y);
GCD (8, 4)
Head of List
Back to Arr[0]
Const HEAD = arr = arr[0];
Head ([1])
List initialization
Back to Arr.slice (0,-1)
Const INITIAL = arr = Arr.slice (0,-1);
Initial ([+])
Initialize an array with range
Use Array (End-start) to create an array of the desired length, use map () to populate the desired values in the range, and omit start using the default value of 0.
Const Initializearrayrange = (end, start = 0) = =
Array.apply (NULL, Array (End-start)). Map ((v, i) = + i + start);
Initializearrayrange (5), [0,1,2,3,4]
Initializing an array with values
Use Array (n) to create an array of the desired length, fill (v) to fill the desired value, and omit value using the default value of 0.
Const InitializeArray = (n, value = 0) = = Array (n). Fill (value);
InitializeArray (5, 2), [2,2,2,2,2]
The last of the list
Back to Arr.slice (-1) [0]
Const LAST = arr = Arr.slice (-1) [0];
Last ([3])
The time it takes to test the feature
Use Performance.now () to get the start and end time of the function, and the time it takes to Console.log (). The first argument is the function name, and subsequent arguments are passed to the function.
Const Timetaken = callback = {
Console.time (' Timetaken ');
Const R = callback ();
Console.timeend (' Timetaken ');
return R;
};
Timetaken (() = Math.pow (2, 1024)
(logged): timetaken:0.02099609375ms
Objects from key-value pairs
Use Array.reduce () to create and combine key-value pairs.
Const OBJECTFROMPAIRS = arr = Arr.reduce ((A, V) = (a[v[0]] = v[1], a), {});
Objectfrompairs ([[' A ', 1],[' B ', 2]]), {a:1, b:2}
Pipeline
Use Array.reduce () to pass a value through a function.
Const PIPE = (... funcs) = arg = Funcs.reduce (ACC, func) = Func (ACC), ARG);
Pipe (btoa, x = X.touppercase ()) ("Test"), "vgvzda=="
Powerset
Use reduce () to combine with map () to iterate through the elements and combine them into an array that contains all the combinations.
Const POWERSET = arr =
Arr.reduce ((A, V) = A.concat (A.map (r = = [V].concat (r))), [[]]);
Powerset [[]], [[], [1], [2], [2,1]]
Random integers in the range
Use Math.random () to generate a random number and map it to the desired range, using Math.floor () to make it an integer.
Const Randomintegerinrange = (min, max) = Math.floor (Math.random () * (Max-min + 1)) + min;
Randomintegerinrange (0, 5)--2
Random number in the range
Use Math.random () to generate a random value and use multiplication to map it to the desired range.
Const Randominrange = (min, max) = = Math.random () * (max-min) + min;
Randominrange (2,10), 6.0211363285087005
Order of the randomized array
Use sort () to reorder elements, using math.random () to randomly sort.
Const SHUFFLE = arr = Arr.sort (() = Math.random ()-0.5);
Shuffle ([+]) [2,3,1]
Redirect to URL
Use Window.location.href or Window.location.replace () to redirect to the URL. Pass the second parameter to simulate a link click (true-default) or HTTP redirect (false).
Const REDIRECT = (URL, Aslink = true) = =
Aslink? window.location.href = url:window.location.replace (URL);
Redirect (' https://google.com ')
Reverses a string
Use array deconstruction and array.reverse () to reverse the order of characters in a string. Merges characters to get a string using join (').
Const ReverseString = str = = [... str].reverse (). Join (');
ReverseString (' Foobar '), ' raboof '
RGB to hexadecimal
Use the bitwise Left shift operator (<<) and ToString (16), and then Padstart (6, "0") to convert the given RGB parameter to a hexadecimal string to obtain a 6-bit hexadecimal value.
Const RGBTOHEX = (r, g, B) = ((R << +) + (g << 8) + B). ToString (+). Padstart (6, ' 0 ');
Rgbtohex (255, 165, 1), ' ffa501 '
Scroll to Top
Use Document.documentElement.scrollTop or Document.body.scrollTop to get to the top of the distance.
Scroll a small portion of the distance from the top.
Use Window.requestanimationframe () to scroll.
Const Scrolltotop = _ = = {
Const C = Document.documentElement.scrollTop | | Document.body.scrollTop;
if (C > 0) {
Window.requestanimationframe (Scrolltotop);
Window.scrollto (0, c-c/8);
}
};
Scrolltotop ()
Random array values
Use Array.map () and Math.random () to create an array of random values. Use Array.Sort () to sort the elements of the original array based on random values.
Similarity between arrays
Use filter () to remove a portion of the value that is not values, using includes () to determine.
Const SIMILARITY = (arr, values) = = Arr.filter (v = values.includes (v));
Similarity ([[+] [1,2,4])
Sort by string (in alphabetical order)
Use Split (') to split the string, sort () using Localecompare (), and using join (') to regroup.
Const Sortcharactersinstring = str = =
Str.split ("). Sort ((A, B) = A.localecompare (b)). Join (');
sortcharactersinstring (' cabbage '), ' Aabbceg '
Array sum
Use reduce () to add each value to the accumulator with an initialization value of 0.
Const SUM = arr = Arr.reduce ((ACC, val) = + acc + val, 0);
SUM ([1,2,3,4]), 10
Exchange values for two variables
Use array deconstruction to exchange values between two variables.
[VarA, Varb] = [Varb, VarA];
[x, Y] = [y, X]
List of tail
Back to Arr.slice (1)
Const TAIL = arr = arr.length > 1? Arr.slice (1): arr;
Tail ([+]) [2,3]
Tail ([1]), [1]
Array unique values
Use the ES6 set and the ... rest operator to remove all duplicate values.
Const UNIQUE = arr = = [... new Set (arr)];
Unique ([1,2,2,3,4,4,5]), [1,2,3,4,5]
URL parameters
Use Match () with the appropriate regular expression to get all the key-value pairs, the appropriate map (). Use the object.assign () and spread operators (...). ) combines all key-value pairs into an object, passing location.search as an argument to the current URL.
Const Geturlparameters = URL = =
Url.match (/([^?=&]+) (= ([^&]*))/g). Reduce (
(A, V) = (a[v.slice (0, v.indexof (' = '))] = V.slice (v.indexof (' = ') + 1), a), {}
);
Geturlparameters (' Http://url.com/page?name=Adam&surname=Smith ') {name: ' Adam ', surname: ' Smith '}
UUID Generator
Use the Crypto API to generate a UUID that complies with RFC4122 version 4.
Const UUID = _ = =
([1e7] + -1e3 + -4e3 + -8e3 + -1e11). Replace (/[018]/g, C =
(c ^ crypto.getrandomvalues (new Uint8array (1)) [0] & >> C/4). toString (16)
);
UUID (), ' 7982fcfe-5721-4632-bede-6000885be57d '
Verifying numbers
Use! isNaN and parsefloat () to check if the parameter is a number, use Isfinite () to check if the number is finite.
Const VALIDATENUMBER = n =!isnan (parsefloat (n)) && isfinite (n) && number (n) = = n;
ValidateNumber (' ten ')-True
Translation is a lot of inaccuracies, interested programmers can go to GitHub on their own to view the original English.
48 pieces of JavaScript code carefully collected, in just 30 seconds to understand