js的数据处理记录
2015-09-25 21:08
579 查看
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)
相关文章推荐
- javascript中 addloadevent和insertAfter函数的使用说明
- 【JavaScript】【学习】对象的创建和继承
- 一个json字符串
- 【前端学习]】javascript数组(Array)
- js倒计时(可定义截止日期)
- rapidjson常见使用示例
- FastJSON解析包含多个自定义类的JSON的方法
- js实现图片上传预览
- JavaScript的DOM编程--12--innerHTML属性
- JavaScript的DOM编程--11--插入节点
- JavaScript中的继承与原型链
- Web-Web/Json的请求与返回
- JavaScript的DOM编程--10--删除节点
- 浅谈 Html && Css && JavaScript(1)
- 滚动条响应鼠标滑轮事件实现上下滚动的js代码
- JavaScript数据检测
- 不开webServer让chrome能读取本地json等文件
- javascript学习笔记(一)
- jstack 线程状态
- json obj map 互转utils