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的主要内容,如果未能解决你的问题,请参考以下文章