unzip
1 2 3 4 5 6 7 8 | <span class="token keyword">const</span> <span class="token function-variable function">unzip</span> <span class="token operator">=</span> arr <span class="token operator">=></span> arr <span class="token punctuation">.</span> <span class="token function">reduce</span> <span class="token punctuation">(</span> <span class="token punctuation">(</span> acc <span class="token punctuation">,</span> val <span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">(</span> val <span class="token punctuation">.</span> <span class="token function">forEach</span> <span class="token punctuation">(</span> <span class="token punctuation">(</span> v <span class="token punctuation">,</span> i <span class="token punctuation">)</span> <span class="token operator">=></span> acc <span class="token punctuation">[</span> i <span class="token punctuation">]</span> <span class="token punctuation">.</span> <span class="token function">push</span> <span class="token punctuation">(</span> v <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">,</span> acc <span class="token punctuation">)</span> <span class="token punctuation">,</span> Array <span class="token punctuation">.</span> <span class="token keyword">from</span> <span class="token punctuation">(</span> <span class="token punctuation">{</span> length <span class="token punctuation">:</span> Math <span class="token punctuation">.</span> <span class="token function">max</span> <span class="token punctuation">(</span> <span class="token operator">...</span> arr <span class="token punctuation">.</span> <span class="token function">map</span> <span class="token punctuation">(</span> x <span class="token operator">=></span> x <span class="token punctuation">.</span> length <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">}</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">map</span> <span class="token punctuation">(</span> x <span class="token operator">=></span> <span class="token punctuation">[</span> <span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> |
1 2 3 4 5 | <span class="token constant">EXAMPLES</span> <span class="token function">unzip</span> <span class="token punctuation">(</span> <span class="token punctuation">[</span> <span class="token punctuation">[</span> <span class="token string">'a'</span> <span class="token punctuation">,</span> <span class="token number">1</span> <span class="token punctuation">,</span> <span class="token boolean">true</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> <span class="token string">'b'</span> <span class="token punctuation">,</span> <span class="token number">2</span> <span class="token punctuation">,</span> <span class="token boolean">false</span> <span class="token punctuation">]</span> <span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token comment">// [['a', 'b'], [1, 2], [true, false]]</span> <span class="token function">unzip</span> <span class="token punctuation">(</span> <span class="token punctuation">[</span> <span class="token punctuation">[</span> <span class="token string">'a'</span> <span class="token punctuation">,</span> <span class="token number">1</span> <span class="token punctuation">,</span> <span class="token boolean">true</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> <span class="token string">'b'</span> <span class="token punctuation">,</span> <span class="token number">2</span> <span class="token punctuation">]</span> <span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token comment">// [['a', 'b'], [1, 2], [true]]</span> |
Use Array.prototype.map () to turn each element into an array. Use Array.prototype.reduce () and Array.prototype.forEach () to map the values grouped into individual arrays.
frequencies
1 2 3 4 5 6 7 8 9 10 11 | <span class="token keyword">const</span> <span class="token function-variable function">frequencies</span> <span class="token operator">=</span> arr <span class="token operator">=></span> arr <span class="token punctuation">.</span> <span class="token function">reduce</span> <span class="token punctuation">(</span> <span class="token punctuation">(</span> a <span class="token punctuation">,</span> v <span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span> a <span class="token punctuation">[</span> v <span class="token punctuation">]</span> <span class="token operator">=</span> a <span class="token punctuation">[</span> v <span class="token punctuation">]</span> <span class="token operator">?</span> a <span class="token punctuation">[</span> v <span class="token punctuation">]</span> <span class="token operator">+</span> <span class="token number">1</span> <span class="token punctuation">:</span> <span class="token number">1</span> <span class="token punctuation">;</span> <span class="token keyword">return</span> a <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token punctuation">}</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token constant">EXAMPLES</span> <span class="token function">frequencies</span> <span class="token punctuation">(</span> <span class="token punctuation">[</span> <span class="token string">'a'</span> <span class="token punctuation">,</span> <span class="token string">'b'</span> <span class="token punctuation">,</span> <span class="token string">'a'</span> <span class="token punctuation">,</span> <span class="token string">'c'</span> <span class="token punctuation">,</span> <span class="token string">'a'</span> <span class="token punctuation">,</span> <span class="token string">'a'</span> <span class="token punctuation">,</span> <span class="token string">'b'</span> <span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token comment">// { a: 4, b: 2, c: 1 }</span> |
Returns an object with unique values of an array and the number of occurrences of values.
Use Array.prototype.reduce () to map unique values to the object’s keys, in addition to the existing keys each time they meet the same value.
mostFrequent
1 2 3 4 5 6 7 8 9 10 11 12 | <span class="token keyword">const</span> <span class="token function-variable function">mostFrequent</span> <span class="token operator">=</span> arr <span class="token operator">=></span> Object <span class="token punctuation">.</span> <span class="token function">entries</span> <span class="token punctuation">(</span> arr <span class="token punctuation">.</span> <span class="token function">reduce</span> <span class="token punctuation">(</span> <span class="token punctuation">(</span> a <span class="token punctuation">,</span> v <span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span> a <span class="token punctuation">[</span> v <span class="token punctuation">]</span> <span class="token operator">=</span> a <span class="token punctuation">[</span> v <span class="token punctuation">]</span> <span class="token operator">?</span> a <span class="token punctuation">[</span> v <span class="token punctuation">]</span> <span class="token operator">+</span> <span class="token number">1</span> <span class="token punctuation">:</span> <span class="token number">1</span> <span class="token punctuation">;</span> <span class="token keyword">return</span> a <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token punctuation">}</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">reduce</span> <span class="token punctuation">(</span> <span class="token punctuation">(</span> a <span class="token punctuation">,</span> v <span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">(</span> v <span class="token punctuation">[</span> <span class="token number">1</span> <span class="token punctuation">]</span> <span class="token operator">>=</span> a <span class="token punctuation">[</span> <span class="token number">1</span> <span class="token punctuation">]</span> <span class="token operator">?</span> v <span class="token punctuation">:</span> a <span class="token punctuation">)</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> <span class="token keyword">null</span> <span class="token punctuation">,</span> <span class="token number">0</span> <span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">[</span> <span class="token number">0</span> <span class="token punctuation">]</span> <span class="token punctuation">;</span> <span class="token constant">EXAMPLES</span> <span class="token function">mostFrequent</span> <span class="token punctuation">(</span> <span class="token punctuation">[</span> <span class="token string">'a'</span> <span class="token punctuation">,</span> <span class="token string">'b'</span> <span class="token punctuation">,</span> <span class="token string">'a'</span> <span class="token punctuation">,</span> <span class="token string">'c'</span> <span class="token punctuation">,</span> <span class="token string">'a'</span> <span class="token punctuation">,</span> <span class="token string">'a'</span> <span class="token punctuation">,</span> <span class="token string">'b'</span> <span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token comment">// 'a'</span> |
Returns the element that appears the most in an array.
Use Array.prototype.reduce () to map unique values to the object’s keys, in addition to the existing keys each time the same value is encountered. Use Object.entries () on the result in combination with Array.prototype.reduce () to get the value that appears the most in the array.
isContainedIn
1 2 3 4 5 6 7 8 9 10 11 | <span class="token keyword">const</span> <span class="token function-variable function">isContainedIn</span> <span class="token operator">=</span> <span class="token punctuation">(</span> a <span class="token punctuation">,</span> b <span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span> <span class="token keyword">for</span> <span class="token punctuation">(</span> <span class="token keyword">const</span> v <span class="token keyword">of</span> <span class="token keyword">new</span> <span class="token class-name">Set</span> <span class="token punctuation">(</span> a <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token operator">!</span> b <span class="token punctuation">.</span> <span class="token function">some</span> <span class="token punctuation">(</span> e <span class="token operator">=></span> e <span class="token operator">===</span> v <span class="token punctuation">)</span> <span class="token operator">||</span> a <span class="token punctuation">.</span> <span class="token function">filter</span> <span class="token punctuation">(</span> e <span class="token operator">=></span> e <span class="token operator">===</span> v <span class="token punctuation">)</span> <span class="token punctuation">.</span> length <span class="token operator">></span> b <span class="token punctuation">.</span> <span class="token function">filter</span> <span class="token punctuation">(</span> e <span class="token operator">=></span> e <span class="token operator">===</span> v <span class="token punctuation">)</span> <span class="token punctuation">.</span> length <span class="token punctuation">)</span> <span class="token keyword">return</span> <span class="token boolean">false</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">return</span> <span class="token boolean">true</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">;</span> <span class="token constant">EXAMPLES</span> <span class="token function">isContainedIn</span> <span class="token punctuation">(</span> <span class="token punctuation">[</span> <span class="token number">1</span> <span class="token punctuation">,</span> <span class="token number">4</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> <span class="token number">2</span> <span class="token punctuation">,</span> <span class="token number">4</span> <span class="token punctuation">,</span> <span class="token number">1</span> <span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token comment">// true</span> |
Returns true if the elements of the first array are contained in the second part regardless of the order or difference.
Use the for … of loop for the Set Set created from the first array. Use Array.prototype.some () to check if all individual values are contained in the second array, use Array.prototype.filter () to compare the number of occurrences of each value. separately in both arrays. Returns false if the number of any elements is greater in the first array than the second, otherwise, true.
haveSameContents
1 2 3 4 5 6 7 8 9 | <span class="token keyword">const</span> <span class="token function-variable function">haveSameContents</span> <span class="token operator">=</span> <span class="token punctuation">(</span> a <span class="token punctuation">,</span> b <span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span> <span class="token keyword">for</span> <span class="token punctuation">(</span> <span class="token keyword">const</span> v <span class="token keyword">of</span> <span class="token keyword">new</span> <span class="token class-name">Set</span> <span class="token punctuation">(</span> <span class="token punctuation">[</span> <span class="token operator">...</span> a <span class="token punctuation">,</span> <span class="token operator">...</span> b <span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> a <span class="token punctuation">.</span> <span class="token function">filter</span> <span class="token punctuation">(</span> e <span class="token operator">=></span> e <span class="token operator">===</span> v <span class="token punctuation">)</span> <span class="token punctuation">.</span> length <span class="token operator">!==</span> b <span class="token punctuation">.</span> <span class="token function">filter</span> <span class="token punctuation">(</span> e <span class="token operator">=></span> e <span class="token operator">===</span> v <span class="token punctuation">)</span> <span class="token punctuation">.</span> length <span class="token punctuation">)</span> <span class="token keyword">return</span> <span class="token boolean">false</span> <span class="token punctuation">;</span> <span class="token keyword">return</span> <span class="token boolean">true</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">;</span> <span class="token constant">EXAMPLES</span> <span class="token function">haveSameContents</span> <span class="token punctuation">(</span> <span class="token punctuation">[</span> <span class="token number">1</span> <span class="token punctuation">,</span> <span class="token number">2</span> <span class="token punctuation">,</span> <span class="token number">4</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> <span class="token number">2</span> <span class="token punctuation">,</span> <span class="token number">4</span> <span class="token punctuation">,</span> <span class="token number">1</span> <span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token comment">// true</span> |
Returns true if the two arrays contain the same elements regardless of order or difference.
Using a for loop for a Set Set is made up of values of both arrays. Use Array.prototype.filter () to compare the number of occurrences of each individual value in both arrays. Returns false if the total does not match any elements, otherwise returns true
weightedSample
1 2 3 4 5 6 7 8 9 | <span class="token keyword">const</span> <span class="token function-variable function">weightedSample</span> <span class="token operator">=</span> <span class="token punctuation">(</span> arr <span class="token punctuation">,</span> weights <span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span> <span class="token keyword">let</span> roll <span class="token operator">=</span> Math <span class="token punctuation">.</span> <span class="token function">random</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token keyword">return</span> arr <span class="token punctuation">[</span> weights <span class="token punctuation">.</span> <span class="token function">reduce</span> <span class="token punctuation">(</span> <span class="token punctuation">(</span> acc <span class="token punctuation">,</span> w <span class="token punctuation">,</span> i <span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">(</span> i <span class="token operator">===</span> <span class="token number">0</span> <span class="token operator">?</span> <span class="token punctuation">[</span> w <span class="token punctuation">]</span> <span class="token punctuation">:</span> <span class="token punctuation">[</span> <span class="token operator">...</span> acc <span class="token punctuation">,</span> acc <span class="token punctuation">[</span> acc <span class="token punctuation">.</span> length <span class="token operator">-</span> <span class="token number">1</span> <span class="token punctuation">]</span> <span class="token operator">+</span> w <span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> <span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">findIndex</span> <span class="token punctuation">(</span> <span class="token punctuation">(</span> v <span class="token punctuation">,</span> i <span class="token punctuation">,</span> s <span class="token punctuation">)</span> <span class="token operator">=></span> roll <span class="token operator">>=</span> <span class="token punctuation">(</span> i <span class="token operator">===</span> <span class="token number">0</span> <span class="token operator">?</span> <span class="token number">0</span> <span class="token punctuation">:</span> s <span class="token punctuation">[</span> i <span class="token operator">-</span> <span class="token number">1</span> <span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token operator">&&</span> roll <span class="token operator"><</span> v <span class="token punctuation">)</span> <span class="token punctuation">]</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">;</span> |
Returns a random element from an array, using the provided weights as the probability for each element.
Use Array.prototype.reduce () to create a partial partial array for each weighted value. Use Math.random () to generate random numbers and Array.prototype.findIndex () to find the exact index based on the previously created array. Finally, return the element of the array with the index produced.
JSONtoCSV
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <span class="token keyword">const</span> JSONtoCSV <span class="token operator">=</span> <span class="token punctuation">(</span> arr <span class="token punctuation">,</span> columns <span class="token punctuation">,</span> delimiter <span class="token operator">=</span> <span class="token string">','</span> <span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">[</span> columns <span class="token punctuation">.</span> <span class="token function">join</span> <span class="token punctuation">(</span> delimiter <span class="token punctuation">)</span> <span class="token punctuation">,</span> <span class="token operator">...</span> arr <span class="token punctuation">.</span> <span class="token function">map</span> <span class="token punctuation">(</span> obj <span class="token operator">=></span> columns <span class="token punctuation">.</span> <span class="token function">reduce</span> <span class="token punctuation">(</span> <span class="token punctuation">(</span> acc <span class="token punctuation">,</span> key <span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token template-string"><span class="token string">`</span> <span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span> acc <span class="token interpolation-punctuation punctuation">}</span></span> <span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span> <span class="token operator">!</span> acc <span class="token punctuation">.</span> length <span class="token operator">?</span> <span class="token string">''</span> <span class="token punctuation">:</span> delimiter <span class="token interpolation-punctuation punctuation">}</span></span> <span class="token string">"</span> <span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span> <span class="token operator">!</span> obj <span class="token punctuation">[</span> key <span class="token punctuation">]</span> <span class="token operator">?</span> <span class="token string">''</span> <span class="token punctuation">:</span> obj <span class="token punctuation">[</span> key <span class="token punctuation">]</span> <span class="token interpolation-punctuation punctuation">}</span></span> <span class="token string">"`</span></span> <span class="token punctuation">,</span> <span class="token string">''</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">]</span> <span class="token punctuation">.</span> <span class="token function">join</span> <span class="token punctuation">(</span> <span class="token string">'n'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token constant">EXAMPLES</span> <span class="token function">JSONtoCSV</span> <span class="token punctuation">(</span> <span class="token punctuation">[</span> <span class="token punctuation">{</span> a <span class="token punctuation">:</span> <span class="token number">1</span> <span class="token punctuation">,</span> b <span class="token punctuation">:</span> <span class="token number">2</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> a <span class="token punctuation">:</span> <span class="token number">3</span> <span class="token punctuation">,</span> b <span class="token punctuation">:</span> <span class="token number">4</span> <span class="token punctuation">,</span> c <span class="token punctuation">:</span> <span class="token number">5</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> a <span class="token punctuation">:</span> <span class="token number">6</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> b <span class="token punctuation">:</span> <span class="token number">7</span> <span class="token punctuation">}</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> <span class="token string">'a'</span> <span class="token punctuation">,</span> <span class="token string">'b'</span> <span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token comment">// 'a,bn"1","2"n"3","4"n"6",""n"","7"'</span> <span class="token function">JSONtoCSV</span> <span class="token punctuation">(</span> <span class="token punctuation">[</span> <span class="token punctuation">{</span> a <span class="token punctuation">:</span> <span class="token number">1</span> <span class="token punctuation">,</span> b <span class="token punctuation">:</span> <span class="token number">2</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> a <span class="token punctuation">:</span> <span class="token number">3</span> <span class="token punctuation">,</span> b <span class="token punctuation">:</span> <span class="token number">4</span> <span class="token punctuation">,</span> c <span class="token punctuation">:</span> <span class="token number">5</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> a <span class="token punctuation">:</span> <span class="token number">6</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> b <span class="token punctuation">:</span> <span class="token number">7</span> <span class="token punctuation">}</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> <span class="token string">'a'</span> <span class="token punctuation">,</span> <span class="token string">'b'</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> <span class="token string">';'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token comment">// 'a;bn"1";"2"n"3";"4"n"6";""n"";"7"'</span> |
Converts an array of objects into comma separated values (CSV) strings that contain only specified columns.
Use Array.prototype.join (delimiters) to combine all the names in the columns to create the first row. Use Array.prototype.map () and Array.prototype.reduce () to create a row for each object, replace the non-existent values with empty strings, and only map values in the columns. Use Array.prototype.join (‘ n’) to combine all rows into a string.
countBy
1 2 3 4 5 6 7 8 9 10 | <span class="token keyword">const</span> <span class="token function-variable function">countBy</span> <span class="token operator">=</span> <span class="token punctuation">(</span> arr <span class="token punctuation">,</span> fn <span class="token punctuation">)</span> <span class="token operator">=></span> arr <span class="token punctuation">.</span> <span class="token function">map</span> <span class="token punctuation">(</span> <span class="token keyword">typeof</span> fn <span class="token operator">===</span> <span class="token string">'function'</span> <span class="token operator">?</span> fn <span class="token punctuation">:</span> val <span class="token operator">=></span> val <span class="token punctuation">[</span> fn <span class="token punctuation">]</span> <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">reduce</span> <span class="token punctuation">(</span> <span class="token punctuation">(</span> acc <span class="token punctuation">,</span> val <span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span> acc <span class="token punctuation">[</span> val <span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token punctuation">(</span> acc <span class="token punctuation">[</span> val <span class="token punctuation">]</span> <span class="token operator">||</span> <span class="token number">0</span> <span class="token punctuation">)</span> <span class="token operator">+</span> <span class="token number">1</span> <span class="token punctuation">;</span> <span class="token keyword">return</span> acc <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> <span class="token punctuation">}</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token constant">EXAMPLES</span> <span class="token function">countBy</span> <span class="token punctuation">(</span> <span class="token punctuation">[</span> <span class="token number">6.1</span> <span class="token punctuation">,</span> <span class="token number">4.2</span> <span class="token punctuation">,</span> <span class="token number">6.3</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> Math <span class="token punctuation">.</span> floor <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token comment">// {4: 1, 6: 2}</span> <span class="token function">countBy</span> <span class="token punctuation">(</span> <span class="token punctuation">[</span> <span class="token string">'one'</span> <span class="token punctuation">,</span> <span class="token string">'two'</span> <span class="token punctuation">,</span> <span class="token string">'three'</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> <span class="token string">'length'</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token comment">// {3: 2, 5: 1}</span> |
Group the elements of an array based on the given function and return the number of elements in each group.
Use Array.prototype.map () to map the values of an array to function names or properties. Use Array.prototype.reduce () to create an object, where keys are generated from mapping results.
differenceBy
1 2 3 4 5 6 7 8 | <span class="token keyword">const</span> <span class="token function-variable function">differenceBy</span> <span class="token operator">=</span> <span class="token punctuation">(</span> a <span class="token punctuation">,</span> b <span class="token punctuation">,</span> fn <span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span> <span class="token keyword">const</span> s <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Set</span> <span class="token punctuation">(</span> b <span class="token punctuation">.</span> <span class="token function">map</span> <span class="token punctuation">(</span> fn <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token keyword">return</span> a <span class="token punctuation">.</span> <span class="token function">map</span> <span class="token punctuation">(</span> fn <span class="token punctuation">)</span> <span class="token punctuation">.</span> <span class="token function">filter</span> <span class="token punctuation">(</span> el <span class="token operator">=></span> <span class="token operator">!</span> s <span class="token punctuation">.</span> <span class="token function">has</span> <span class="token punctuation">(</span> el <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">;</span> <span class="token constant">EXAMPLES</span> <span class="token function">differenceBy</span> <span class="token punctuation">(</span> <span class="token punctuation">[</span> <span class="token number">2.1</span> <span class="token punctuation">,</span> <span class="token number">1.2</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> <span class="token number">2.3</span> <span class="token punctuation">,</span> <span class="token number">3.4</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> Math <span class="token punctuation">.</span> floor <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token comment">// [1]</span> <span class="token function">differenceBy</span> <span class="token punctuation">(</span> <span class="token punctuation">[</span> <span class="token punctuation">{</span> x <span class="token punctuation">:</span> <span class="token number">2</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> x <span class="token punctuation">:</span> <span class="token number">1</span> <span class="token punctuation">}</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> <span class="token punctuation">{</span> x <span class="token punctuation">:</span> <span class="token number">1</span> <span class="token punctuation">}</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> v <span class="token operator">=></span> v <span class="token punctuation">.</span> x <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token comment">// [2]</span> |
Returns the difference between the two arrays, after applying the function provided to each element of both arrays.
Create the Set Set by applying fn to each element in b, then using Array.prototype.map () to apply fn to each element in a, then Array.prototype.filter ()