碎片时间学编程「29]:根据函数取消组合数组元素

创建一个元素数组,将zip生成的数组中的元素解构并应用提供的函数。

使用Math.max()和 ( ...) 展开运算符获取数组中最长的子数组,通过Array.prototype.map()方法使每个元素成为一个数组。

使用Array.prototype.reduce()和Array.prototype.forEach()方法将分组值映射到单个数组。

使用Array.prototype.map()和展开运算符 (...) 应用于fn每个单独的元素组。

const unzipWith = (arr, fn) =>

  arr

    .reduce(

      (acc, val) => (val.forEach((v, i) => acc[i].push(v)), acc),

      Array.from({

        length: Math.max(...arr.map(x => x.length))

      }).map(x => [])

    )

    .map(val => fn(...val));

更多内容请访问我的网站 www.icoderoad.com

你可能感兴趣的:(碎片时间学编程「29]:根据函数取消组合数组元素)