js对数据分组类似Sql语句group by

一、数据类型

groups = [
  {"name": "1", "age": 15},
  {"name": "1", "age": 16},
  {"name": "2", "age": 17},
  {"name": "2", "age": 18},
];

二、定义分组函数groupBy

groupBy(array, f) {
  const groups = {};
  array.forEach(function (o) {
    const group = JSON.stringify(f(o));
    groups[group] = groups[group] || [];
    groups[group].push(o);
  });
  return Object.keys(groups).map(function (group) {
    return groups[group];//返回数组
  });
  // return groups;//返回对象
}

三、使用分组函数groupBy

let groupData = _this.groupBy(groups, (link) => {
	return [link.name]
})

案例

/**
 * @param {Object} array  分类数组对象
 * @param {Object} fun  匿名函数
 */
function groupBy( array , fun ) {
    let groups = {};
    array.forEach( function( o ) {
        let group = JSON.stringify( fun(o) );//分组的字段值作为Key
        groups[group] = groups[group] || [];//定义对象Key
        groups[group].push( o );//将数组内每个对象定义成Key value的形式
    });
	//对对象分组  返回,即完成分组
    return Object.keys(groups).map( function( group ) {
        return groups[group];
    });
}
//定义匿名函数  功能:返回要进行分组的对象value
let fun=function(item){
	let index=item.fieldNames.indexOf('类型');
    return item.fieldValues[index];
}
let sorted = groupBy(obj.features,fun);

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不秃头的LT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值