JavaScript之纯数组按指定特征分组mapreducetypeofconcatlength

Posted web半晨

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript之纯数组按指定特征分组mapreducetypeofconcatlength相关的知识,希望对你有一定的参考价值。

数组分组,将传入的数据按指定特征进行分组
输入:数组值,函数或属性
输出:对象 key:数组所有元素经过处理后的值 value:相同key的数组元素集合


let arrFloatingPointNumber = [7.7, 5.2, 7.3],
    arrLength = ['one', 'two', 'weet', 'thren'];

function groupBy(arr, fn) 
    return arr.map(item => 
        if (typeof fn === 'function') 
            return fn(item);
         else 
            return item[fn];
        
    ).reduce((pre, cur, i) => 
        if (!pre[cur]) 
            pre[cur] = [arr[i]];
         else 
            pre[cur] = pre[cur].concat(arr[i]);
        
        return pre;
    , );


console.log('arrFloatingPointNumber:', groupBy(arrFloatingPointNumber, Math.floor));
// arrFloatingPointNumber: 5: Array(1), 7: Array(2)
console.log('arrLength:', groupBy(arrLength, 'length'));
// arrLength: 3: Array(2), 4: Array(1), 5: Array(1)

以上是关于JavaScript之纯数组按指定特征分组mapreducetypeofconcatlength的主要内容,如果未能解决你的问题,请参考以下文章

linq.js 按javascript中的对象数组分组

javascript 数组按字段分组

按数组中的指定列对行进行分组

将javascript数组中的重复值分组在一起,然后按值名称升序对这些组进行排序

是否可以对这种数组进行分组? [Javascript]

在 LINQ 中按特定列分组 [重复]