Travis build: 1780
This commit is contained in:
17
README.md
17
README.md
@ -2866,22 +2866,19 @@ zipObject(['a', 'b'], [1, 2, 3]); // {a: 1, b: 2}
|
||||
|
||||
Creates an array of elements, grouped based on the position in the original arrays and using function as the last value to specify how grouped values should be combined.
|
||||
|
||||
Check if the last argument provided in a function.
|
||||
Check if the last argument provided is a function.
|
||||
Use `Math.max()` to get the longest array in the arguments.
|
||||
Creates an array with that length as return value and use `Array.from()` with a map-function to create an array of grouped elements.
|
||||
If lengths of the argument-arrays vary, `undefined` is used where no value could be found.
|
||||
The function is invoked with the elements of each group `(...group)`.
|
||||
|
||||
```js
|
||||
const zipWith = (...arrays) => {
|
||||
const length = arrays.length;
|
||||
let fn = length > 1 ? arrays[length - 1] : undefined;
|
||||
fn = typeof fn == 'function' ? (arrays.pop(), fn) : undefined;
|
||||
const maxLength = Math.max(...arrays.map(x => x.length));
|
||||
const result = Array.from({ length: maxLength }).map((_, i) => {
|
||||
return Array.from({ length: arrays.length }, (_, k) => arrays[k][i]);
|
||||
});
|
||||
return fn ? result.map(arr => fn(...arr)) : result;
|
||||
const zipWith = (...array) => {
|
||||
const fn = typeof array[array.length - 1] === 'function' ? array.pop() : undefined;
|
||||
return Array.from(
|
||||
{ length: Math.max(...array.map(a => a.length)) },
|
||||
(_, i) => (fn ? fn(...array.map(a => a[i])) : array.map(a => a[i]))
|
||||
);
|
||||
};
|
||||
```
|
||||
|
||||
|
||||
@ -575,15 +575,12 @@ Object<span class="token punctuation">.</span><span class="token function">assig
|
||||
props<span class="token punctuation">.</span><span class="token function">reduce</span><span class="token punctuation">((</span>obj<span class="token punctuation">,</span> prop<span class="token punctuation">,</span> index<span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">((</span>obj<span class="token punctuation">[</span>prop<span class="token punctuation">]</span> <span class="token operator">=</span> values<span class="token punctuation">[</span>index<span class="token punctuation">]),</span> obj<span class="token punctuation">), {});</span>
|
||||
</pre><label class="collapse">Show examples</label><pre class="language-js"><span class="token function">zipObject</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">'c'</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 comment">// {a: 1, b: 2, c: undefined}</span>
|
||||
<span class="token function">zipObject</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 number">1</span><span class="token punctuation">,</span> <span class="token number">2</span><span class="token punctuation">,</span> <span class="token number">3</span><span class="token punctuation">]);</span> <span class="token comment">// {a: 1, b: 2}</span>
|
||||
</pre><button class="primary clipboard-copy">📋 Copy to clipboard</button></div></div><div class="card fluid"><h3 id="zipwith" class="section double-padded">zipWith<mark class="tag">advanced</mark></h3><div class="section double-padded"><p>Creates an array of elements, grouped based on the position in the original arrays and using function as the last value to specify how grouped values should be combined.</p><p>Check if the last argument provided in a function. Use <code>Math.max()</code> to get the longest array in the arguments. Creates an array with that length as return value and use <code>Array.from()</code> with a map-function to create an array of grouped elements. If lengths of the argument-arrays vary, <code>undefined</code> is used where no value could be found. The function is invoked with the elements of each group <code>(...group)</code>.</p><pre class="language-js"><span class="token keyword">const</span> <span class="token function-variable function">zipWith</span> <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token operator">...</span>arrays<span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
|
||||
<span class="token keyword">const</span> length <span class="token operator">=</span> arrays<span class="token punctuation">.</span>length<span class="token punctuation">;</span>
|
||||
<span class="token keyword">let</span> fn <span class="token operator">=</span> length <span class="token operator">></span> <span class="token number">1</span> <span class="token operator">?</span> arrays<span class="token punctuation">[</span>length <span class="token operator">-</span> <span class="token number">1</span><span class="token punctuation">] :</span> undefined<span class="token punctuation">;</span>
|
||||
fn <span class="token operator">=</span> <span class="token keyword">typeof</span> fn <span class="token operator">==</span> <span class="token string">'function'</span> <span class="token operator">?</span> <span class="token punctuation">(</span>arrays<span class="token punctuation">.</span><span class="token function">pop</span><span class="token punctuation">(),</span> fn<span class="token punctuation">) :</span> undefined<span class="token punctuation">;</span>
|
||||
<span class="token keyword">const</span> maxLength <span class="token operator">=</span> Math<span class="token punctuation">.</span><span class="token function">max</span><span class="token punctuation">(</span><span class="token operator">...</span>arrays<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 keyword">const</span> result <span class="token operator">=</span> Array<span class="token punctuation">.</span><span class="token keyword">from</span><span class="token punctuation">({</span> length<span class="token punctuation">:</span> maxLength <span class="token punctuation">}).</span><span class="token function">map</span><span class="token punctuation">((</span>_<span class="token punctuation">,</span> i<span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
|
||||
<span class="token keyword">return</span> Array<span class="token punctuation">.</span><span class="token keyword">from</span><span class="token punctuation">({</span> length<span class="token punctuation">:</span> arrays<span class="token punctuation">.</span>length <span class="token punctuation">}, (</span>_<span class="token punctuation">,</span> k<span class="token punctuation">)</span> <span class="token operator">=></span> arrays<span class="token punctuation">[</span>k<span class="token punctuation">][</span>i<span class="token punctuation">]);
|
||||
});</span>
|
||||
<span class="token keyword">return</span> fn <span class="token operator">?</span> result<span class="token punctuation">.</span><span class="token function">map</span><span class="token punctuation">(</span>arr <span class="token operator">=></span> <span class="token function">fn</span><span class="token punctuation">(</span><span class="token operator">...</span>arr<span class="token punctuation">)) :</span> result<span class="token punctuation">;
|
||||
</pre><button class="primary clipboard-copy">📋 Copy to clipboard</button></div></div><div class="card fluid"><h3 id="zipwith" class="section double-padded">zipWith<mark class="tag">advanced</mark></h3><div class="section double-padded"><p>Creates an array of elements, grouped based on the position in the original arrays and using function as the last value to specify how grouped values should be combined.</p><p>Check if the last argument provided is a function. Use <code>Math.max()</code> to get the longest array in the arguments. Creates an array with that length as return value and use <code>Array.from()</code> with a map-function to create an array of grouped elements. If lengths of the argument-arrays vary, <code>undefined</code> is used where no value could be found. The function is invoked with the elements of each group <code>(...group)</code>.</p><pre class="language-js"><span class="token keyword">const</span> <span class="token function-variable function">zipWith</span> <span class="token operator">=</span> <span class="token punctuation">(</span><span class="token operator">...</span>array<span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
|
||||
<span class="token keyword">const</span> fn <span class="token operator">=</span> <span class="token keyword">typeof</span> array<span class="token punctuation">[</span>array<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> <span class="token string">'function'</span> <span class="token operator">?</span> array<span class="token punctuation">.</span><span class="token function">pop</span><span class="token punctuation">() :</span> undefined<span class="token punctuation">;</span>
|
||||
<span class="token keyword">return</span> Array<span class="token punctuation">.</span><span class="token keyword">from</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>array<span class="token punctuation">.</span><span class="token function">map</span><span class="token punctuation">(</span>a <span class="token operator">=></span> a<span class="token punctuation">.</span>length<span class="token punctuation">)) },
|
||||
(</span>_<span class="token punctuation">,</span> i<span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">(</span>fn <span class="token operator">?</span> <span class="token function">fn</span><span class="token punctuation">(</span><span class="token operator">...</span>array<span class="token punctuation">.</span><span class="token function">map</span><span class="token punctuation">(</span>a <span class="token operator">=></span> a<span class="token punctuation">[</span>i<span class="token punctuation">])) :</span> array<span class="token punctuation">.</span><span class="token function">map</span><span class="token punctuation">(</span>a <span class="token operator">=></span> a<span class="token punctuation">[</span>i<span class="token punctuation">]))
|
||||
);
|
||||
};</span>
|
||||
</pre><label class="collapse">Show examples</label><pre class="language-js"><span class="token function">zipWith</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">10</span><span class="token punctuation">,</span> <span class="token number">20</span><span class="token punctuation">], [</span><span class="token number">100</span><span class="token punctuation">,</span> <span class="token number">200</span><span class="token punctuation">], (</span>a<span class="token punctuation">,</span> b<span class="token punctuation">,</span> c<span class="token punctuation">)</span> <span class="token operator">=></span> a <span class="token operator">+</span> b <span class="token operator">+</span> c<span class="token punctuation">);</span> <span class="token comment">// [111,222]</span>
|
||||
<span class="token function">zipWith</span><span class="token punctuation">(
|
||||
|
||||
@ -11,11 +11,10 @@ The function is invoked with the elements of each group `(...group)`.
|
||||
```js
|
||||
const zipWith = (...array) => {
|
||||
const fn = typeof array[array.length - 1] === 'function' ? array.pop() : undefined;
|
||||
return Array
|
||||
.from(
|
||||
{ length: Math.max(...array.map(a => a.length)) },
|
||||
(_, i) => (fn ? fn(...array.map(a => a[i])) : array.map(a => a[i])),
|
||||
);
|
||||
return Array.from(
|
||||
{ length: Math.max(...array.map(a => a.length)) },
|
||||
(_, i) => (fn ? fn(...array.map(a => a[i])) : array.map(a => a[i]))
|
||||
);
|
||||
};
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user