js的数据处理记录
mongoDB的mapReduce返回的数据有可能会非常之多,所以单独拎出来先在浏览器里面玩一玩;
// 数据源
var arr = [
{"address": "四川汶川", "count": 1, "value": 1.5},
{"address": "云南玉龙", "count": 20, "value": 2.2},
{"address": "四川自贡", "count": 2, "value": 1.4},
{"address": "四川木里", "count": 1, "value": 1.7},
{"address": "甘肃天祝", "count": 4, "value": 1.8},
{"address": "云南玉龙", "count": 30, "value": 2.1},
{"address": "四川木里", "count": 100, "value": 1.1},
{"address": "云南鲁甸", "count": 2, "value": 1.3},
{"address": "云南玉龙", "count": 1, "value": 2.2},
];
// 目标结构,count求和,并归类value,以及按照count排序;
{'四川木里':{count:2,value:[1.1,1.7]},'云南玉龙':{count:100,value[1.2,1.8]}}
var arr2 = [];
for(var i=0 ; i<arr.length; i++){
var add = arr[i]['address']; //获取当前的地区
var arrCur = [arr[i]]; //新建一个临时的数组,作为待比较源;
//把所有同一个城市的数据放到.临时数组里
for(var j=i+1 ; j<arr.length ; j++){
if(arr[j]['address'] == add){
arrCur.push(arr[j]);
arr.splice(j,1); //每放进一个则删除一个,目的是为了在外层循环的时候去重
j--; //如果删除了,指针再回退一个
}
}
var obj = {},
count = 0,
value = [];
for(var k = 0 ; k<arrCur.length ; k++){
count += arrCur[k]['count'];
//这里对value再进行一次去重,没有的才push进去
if (value.indexOf(arrCur[k]['value'])== "-1" ){ //es5新方法;
value.push(arrCur[k]['value'])
}
}
obj[add] = {
count: count,
value: value
};
obj['count'] = count; //为了方便后续用sort排序,这里做一个冗余;
arr2.push(obj)
}
//排序
arr2.sort(function(a,b){
return a.count - b.count
});
for(var i=0; i<arr2.length;i++){ //删除掉冗余..;
delete arr2[i].count;
}
console.log(arr2)
js的数据处理记录的更多相关文章
- js 实现键盘记录 兼容FireFox和IE
这两天突然想弄弄js的键盘记录,所以就小研究了一下. 主要分四个部分 第一部分:浏览器的按键事件 第二部分:兼容浏览器 第三部分:代码实现和优化 第四部分:总结 第一部分:浏览器的按键事件 用js实现 ...
- js实用方法记录-js动态加载css、js脚本文件
js实用方法记录-动态加载css/js 附送一个加载iframe,h5打开app代码 1. 动态加载js文件到head标签并执行回调 方法调用:dynamicLoadJs('http://www.yi ...
- js实用方法记录-简单cookie操作
js实用方法记录-简单cookie操作 设置cookie:setCookie(名称,值,保存时间,保存域); 获取cookie:setCookie(名称); 移除cookie:setCookie(名称 ...
- js实用方法记录-指不定哪天就会用到的js方法
js实用方法记录-指不定哪天就会用到的js方法 常用或者不常用都有 判断是否在微信浏览器中 测试代码:isWeiXin()==false /** * 是否在微信中 */ function isWeix ...
- js小功能记录
个人日常中遇到的js小功能记录,方便查看. /** * 判断是否包含字符串某字符串 * @param {[type]} str [被检测的字符串] * @param {[type]} substr [ ...
- .net mvc 站点自带简易SSL加密传输 Word报告自动生成(例如 导出数据库结构) 微信小程序:动画(Animation) SignalR 设计理念(一) ASP.NET -- WebForm -- ViewState ASP.NET -- 一般处理程序ashx 常用到的一些js方法,记录一下 CryptoJS与C#AES加解密互转
.net mvc 站点自带简易SSL加密传输 因项目需要,传输数据需要加密,因此有了一些经验,现简易抽出来分享! 请求:前端cryptojs用rsa/aes 或 rsa/des加密,后端.net ...
- JS继续学习记录(一)
JS继续学习记录(一) 总感觉自己的js code写的还算可以,但是又深知好像只知道一些皮毛,所以打算仔细记录一下js晋级学习过程,日日往复 先记录一下自己目前对js的了解吧(20180828) js ...
- 正确判断js数据类型 总结记录
正确判断js数据类型 总结记录 判断js中的数据类型有一下几种方法:typeof.instanceof. constructor. prototype. 三方库. js六大数据类型 number: 数 ...
- 2017、2018面试分享(js面试题记录)记得点赞分享哦;让更多的人看到~~
2017面试分享(js面试题记录) 1. 最简单的一道题 '11' * 2 'a8' * 3 var a = 2, b = 3; var c = a+++b; // c = 5 2. 一道this的问 ...
随机推荐
- 支持IE6的树形节结构TreeTable
关于TreeTable实际应用的案例:http://www.cnblogs.com/qigege/p/5213689.html treeTable是跨浏览器.性能很高的jquery的树表组件,它使用非 ...
- 【Qt】Qt之启动外部程序【转】
简述 QProcess可以用来启动外部程序,并与它们交互. 要启动一个进程,通过调用start()来进行,参数包含程序的名称和命令行参数,参数作为一个QStringList的单个字符串. 另外,也可以 ...
- Hbase 0.98集群搭建的详细步骤
准备工作 Hbase的搭建是依赖于Hadoop的,Hbase的数据文件实际上存储在HDFS文件系统中,所以我们需要先搭建hadoop环境,之前的博文中已经搭建过了(详见http://www.cnblo ...
- CSS的IE6、IE7、FF兼容性写法
blue;< /td> Firefox 背景变蓝色 red /9; IE8 背景变红色 *black;< /td> IE7 背景变黑色 _background:orange; ...
- 小课堂Week9 例外处理设计的逆袭Part2
小课堂Week9 例外处理设计的逆袭Part2 今天继续阅读<例外处理设计的逆袭>这本书,我们先看两个案例: 案例1 问:如果要设计一个依据学号到数据库中查询学生资料的函数,当找不到符合条 ...
- Hive基本命令整理
创建表: hive> CREATE TABLE pokes (foo INT, bar STRING); Creates a table called pokes with t ...
- MySQL 死锁日志分析
------------------------ LATEST DETECTED DEADLOCK ------------------------ 140824 1:01:24 *** (1) T ...
- MySQL 简洁连接数据库方式
OS : CentOS 6.3 DB : 5.5.14 MySQL连接数据库的方式很多: 1.[root@db01 bin]# ./mysql -uroot -p 2.[root@db01 ...
- MVC C# 调用存储过程
SqlParameter[] param ={ new SqlParameter("@SignInfoId ",SqlDbType.Int), new SqlParameter(& ...
- 自定义更新Hibernate Ehcache
最近在做一个项目中需要用缓存,项目持久层用的是Hibernate,然后就考虑用二级缓存来实现,但是后来项目扩展,由第三方修改数据这样缓存就会要等到失效后重新获取数据库的数据,本来这样是没问题的,可是领 ...