碎片时间学编程「76]:根据给定的函数对数组元素进行分组

用Array.prototype.map()将数组的值映射到函数或属性名称。

用Array.prototype.reduce()创建一个对象,其中键是从映射结果中生成的。

const groupBy = (arr, fn) =>

  arr

    .map(typeof fn === 'function' ? fn : val => val[fn])

    .reduce((acc, val, i) => {

      acc[val] = (acc[val] || []).concat(arr[i]);

      return acc;

    }, {});

示例

groupBy([6.1,4.2,6.3],Math.floor);// {4: [4.2], 6: [6.1, 6.3]}

groupBy(['one','two','three'],'length');// {3: ['one', 'two'], 5: ['three']}

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容