js按照数组中的某个字段进行分组

JavaScript013

js按照数组中的某个字段进行分组,第1张

const groupBy = (array, f) =>{

    let groups = {}

    array.forEach(function (o) {

        var group = JSON.stringify(f(o))

        groups[group] = groups[group] || []

        groups[group].push(o)

    })

    return Object.keys(groups).map(function (group) {

        return groups[group]

    })

}

const arrayGroupBy = (list, groupId) =>{

    let sorted = groupBy(list, function (item) {

        return [item[groupId]]

    })

    return sorted

}

arrayGroupBy(数组, '字段名称')

mongodb中实现sql中德group by可以采用聚合函数aggregate

参考代码:

/**

* select avg(pop) avgCitypop from zipsController group by state

*/

exports.avgGroupByStateCityDemo2Async = function (opts) {

var results = {error_code: -1, error_msg: "error"}

var pipeline =[

{

$group: {

_id: "$state",

avgCitypop: {$avg: "$pop"}

}

}

]

return opts.dbs.csdb.collection("zipsController").aggregateAsync(pipeline)

分组使用select数学成绩fromgradegroupby数学成绩。

select姓名"学生姓名",(数学成绩+英语成绩+计算机成绩)/3“平均成绩”fromgradewhere数学成绩,60。