javascript group by 对数据分组

网上找不到js分组的原生态方法,今天有空自己写了个方法,感觉还可以,拿出来分享,望各位读者多多指教。

 1 $scope.groupBy = function (itemlist, gby) {
 2
 3         var setGroupObj = function (noteObj,rule, gby, gIndex, maxIndex)
 4         {
 5             var gname = rule[gby[gIndex]];
 6             if (gIndex == maxIndex) {
 7                 if (noteObj[gname] == undefined)
 8                     noteObj[gname] = [];
 9                 if (noteObj[gname].indexOf(rule) < 0) {
10                     noteObj[gname].push(rule);
11                 }
12             }
13             else {
14                 if (noteObj[gname] == undefined) {
15                     noteObj[gname] = {};
16                 }
17                 setGroupObj(noteObj[gname], rule, gby, gIndex + 1, maxIndex);
18             }
19         }
20
21         var noteObj = {};
22         for (var i = 0; i < itemlist.length; i++) {
23             setGroupObj(noteObj, itemlist[i], gby, 0, gby.length - 1);
24         }
25
26
27         var getSubInfo = function (note, p, gIndex, maxIndex) {
28             var newobj = {}
29             newobj.key = p;
30             newobj.value = [];
31             if (gIndex == maxIndex) {
32                 for (var k in note) {
33                     newobj.value.push(note[k]);
34                 }
35             }
36             else {
37                 for (var k in note[p]) {
38                     newobj.value.push(getSubInfo(note[p][k], k, gIndex + 1, maxIndex));
39                 }
40             }
41             return newobj;
42         }
43         var myobj = [];
44         for (var p in noteObj) {
45             myobj.push(getSubInfo(noteObj, p, 0, gby.length - 1));
46         }
47         return myobj;
48     }
49     $scope.groupRules = $scope.groupBy(allrules, [‘groupbycolumn1‘, ‘groupbycolumn2‘]);

其中allrules是要分组的数组,groupbycolumn1,groupbycolumn2是要进行分组的字段名,可以支持多个。

返回的结果是一个分组的对象:

var result={key:‘‘,value:[

{key:‘‘,value:[]},{key:‘‘,value:[]}

]}

时间: 2024-10-10 06:46:56

javascript group by 对数据分组的相关文章

6.数据分组-统计信息

---数据分组-统计信息----- --select 字段列表from 表列表 where 对数据源进行数据筛选group by 分组字段列表Order by 排序字段列表 --1.得到所有学员总人数 select COUNT(*) from Student --2.得到男女生的人数 select COUNT(*) from Student where Sex='男' select COUNT(*) from Student where Sex='女' --使用分组统计 select COUNT

SQL数据分组后取最大值或者取前几个值(按照某一列排序)

今日做项目的时候,项目中遇到需要将数据分组后,分组中的最大值,想了想,不知道怎么做,于是网上查了查,终于找到了思路,经过比较这个查询时目前用时最快的,其实还有别的方法,但是我觉得我们只掌握最快的方法就行 ,好了,不说废话了! 直接上内容吧:以下数据是通过 SELECT [CustomerCaseNo],[PaymentsTime] FROM [BOMSDatabase].[dbo].[BAL_paymentsSwiftInfo] where StoresNo='zq00000034' group

背水一战 Windows 10 (51) - 控件(集合类): ItemsControl - 项模板选择器, 数据分组

原文:背水一战 Windows 10 (51) - 控件(集合类): ItemsControl - 项模板选择器, 数据分组 [源码下载] 作者:webabcd 介绍背水一战 Windows 10 之 控件(集合类 - ItemsControl) 项模板选择器 数据分组 示例1.ItemsControl 的项模板选择器Controls/CollectionControl/ItemsControlDemo/ItemsControlDemo3.xaml <Page x:Class="Windo

SQL数据分组后取最大值或者取前几个值(依照某一列排序)

今日做项目的时候,项目中遇到须要将数据分组后,分组中的最大值,想了想,不知道怎么做.于是网上查了查,最终找到了思路,经过比較这个查询时眼下用时最快的,事实上还有别的方法,可是我认为我们仅仅掌握最快的方法即可 .好了,不说废话了! 直接上内容吧:下面数据是通过 SELECT [CustomerCaseNo],[PaymentsTime] FROM [BOMSDatabase].[dbo].[BAL_paymentsSwiftInfo] where StoresNo='zq00000034' gro

每天一点数据库之-----Day 6 数据分组与数据分页

每天一点数据库之-----Day 6 数据分组与数据分页 ----转载请注明出处:coder-pig 本节引言: 本节继续来学习SQL中的数据查询中的数据分组~ 先建个表,录几条数据,顺道复习下之前学的内容~ 之前建立的T_Worker都用了几天了,今天就来弄个新的表吧T_Product商品表: 建表SQL: CREATE TABLE T_Product ( PId INTEGER, PName VARCHAR(20), PKind VARCHAR(20), PCity VARCHAR(10),

4.数据分组

  数据分组 按照年龄进行分组统计各个年龄段的人数: select age, count(*) from employee group by age; group by 子句必须放到where语句的之后: 没有出现在group by子句中的列是不能放到select语句后的列名列表中的(聚合函数除外) Having语句 在where中不能使用聚合函数,必须使用having,having要位于group by之后,select age,count(*) as renshu from cemploye

9.数据分组 ---SQL

一.创建分组 分组是使用SELECT语句的GROUP BY子句建立的.理解分组的最好办法是看一个例子: SELECT vend_id, COUNT(*) AS num_prods FROM Products GROUP BY vend_id; 输出▼ vend_id num_prods ------- --------- BRS01 3 DLL01 4 FNG01 2 分析▼上面的SELECT语句指定了两个列:vend_id包含产品供应商的ID,num_prods为计算字段(用COUNT(*)函

使用GROUP BY子句进行分组操作

本文通过实例介绍GROUP BY子句的使用方法. 1 准备测试数据 新建数据表tb_Student并插入下图所示的测试数据. 图1 数据表tb_Student的数据 2 使用GROUP BY子句进行分组 问题1  要求 按照班级ID对学生进行分组,并查询出每个班级的学生数,学生的最大年龄,最小年龄,年龄总和及年龄平均等信息. 解答 SELECT s.class_id AS 班级,COUNT(*) AS 人数,MAX(s.student_age) AS 年龄最大,MIN(s.student_age

R实现大文本文件数据分组汇总的方法

使用R语言对文件数据分组汇总是很普遍的操作,但有时我们会遇到比较大的文件,这类文件的计算结果较小,但源数据太大,无法全部放入内存进行计算,只能采用分批读取.分批计算.拼合结果的办法来解决.下面用一个例子来说明R实现大文件数据分组汇总的方法. 有个1G的文件sales.txt,存储着大量订单记录,我们要对CLIENT字段分组并对AMOUNT字段汇总.该文件的列分割符为"\t",前几行数据如下: R语言解决方案     con <- file("E: \\sales.txt