diff --git a/README.md b/README.md index 701b108ef..529470676 100644 --- a/README.md +++ b/README.md @@ -43,6 +43,7 @@ * [Reverse a string](#reverse-a-string) * [RGB to hexadecimal](#rgb-to-hexadecimal) * [Scroll to top](#scroll-to-top) +* [Shuffle array values](#shuffle-array-values) * [Similarity between arrays](#similarity-between-arrays) * [Sort characters in string (alphabetical)](#sort-characters-in-string-alphabetical) * [Sum of array of numbers](#sum-of-array-of-numbers) @@ -423,6 +424,19 @@ const scrollToTop = _ => { // scrollToTop() ``` +### Shuffle array values + +Create an array of random values by using `Array.map()` and `Math.random()`. +Use `Array.sort()` to sort the elements of the original array based on the random values. + +```js +const shuffle = arr => { + let r = arr.map(Math.random); + return arr.sort((a,b) => r[a] - r[b]); +} +// shuffle([1,2,3]) -> [2, 1, 3] +``` + ### Similarity between arrays Use `filter()` to remove values that are not part of `values`, determined using `includes()`. diff --git a/snippets/shuffle-array-values.md b/snippets/shuffle-array-values.md new file mode 100644 index 000000000..a140bd647 --- /dev/null +++ b/snippets/shuffle-array-values.md @@ -0,0 +1,12 @@ +### Shuffle array values + +Create an array of random values by using `Array.map()` and `Math.random()`. +Use `Array.sort()` to sort the elements of the original array based on the random values. + +```js +const shuffle = arr => { + let r = arr.map(Math.random); + return arr.sort((a,b) => r[a] - r[b]); +} +// shuffle([1,2,3]) -> [2, 1, 3] +```