前几天,我的Leader 要我给一串 数组 进行统计!!
因为在数据里做group by太麻烦了,所以要在javascript里面实现。
于是我 想到了 LINQ to JavaScript ,但 细细的看了一下 ,发现没有group by的相关功能,于是自己动手搞了一下!
这个 功能 是完全基于 LINQ to JavaScript的,只不过自己添加了group by的功能,与其他功能可以一起使用!
代码实现:
需要分组的数据:

Code
var samples =[
{_C:"000001",_S:"SFZA",_N:"深发展A"},
{_C:"000001",_S:"WKA",_N:"万科A"},
{_C:"000001",_S:"PTJTA",_N:"PT金田A"},
{_C:"000001",_S:"STGN",_N:"ST国农"},
{_C:"000001",_S:"SJXY",_N:"世纪星源"},
{_C:"000001",_S:"SZYA",_N:"深振业A"},
{_C:"000001",_S:"STDS",_N:"ST达声"},
{_C:"000001",_S:"STBLL",_N:"ST宝利来"},
{_C:"000001",_S:"ZGBA",_N:"中国宝安"},
{_C:"000011",_S:"SSTHX",_N:"SST华新"},
{_C:"000011",_S:"SSTWY",_N:"S*ST物业"},
{_C:"000011",_S:"NBA",_N:"南玻A"},
{_C:"000011",_S:"STSHA",_N:"*ST石化A"},
{_C:"000011",_S:"SHGF",_N:"沙河股份"},
{_C:"000011",_S:"PTZHA",_N:"PT中浩A"},
{_C:"000011",_S:"SKJA",_N:"深康佳A"},
{_C:"000011",_S:"SSTZHA",_N:"SST中华A"},
{_C:"000011",_S:"STZGA",_N:"ST中冠A"},
{_C:"000011",_S:"SSBA",_N:"深深宝A"},
{_C:"000021",_S:"STHFA",_N:"ST华发A"},
{_C:"000021",_S:"CCKF",_N:"长城开发"},
{_C:"000022",_S:"SCWA",_N:"深赤湾A"},
{_C:"000023",_S:"STDA",_N:"深天地A"}
]
使用代码:

Code
var samples1 = From(EALists).
GroupBy(function(item,index){ return item._C;});
代码实现:

Code
Array.prototype.GroupBy=function(clause){
var newArray=new Array();
if(typeof(clause) == "function")
{
for (var index = 0; index < this.length; index++)
{
var KeyValues= clause(this[index], index);
var isExsits=false;
for(var n=0;n<newArray.length;n++)
{
if(newArray[n].KeyValue==KeyValues)
{
newArray[n].KeyCount=parseInt(newArray[n].KeyCount)+1;
isExsits=true;
}
}
if(!isExsits)
{
newArray.push({KeyValue:KeyValues,KeyCount:1});
}
}
}
return newArray;
};