js的数据处理记录

本文详细介绍了如何使用MongoDB的mapReduce功能处理大量数据,并通过简单的步骤实现数据的聚合分析,包括数据去重、计数、求和及按条件排序等操作。通过实例演示了如何将原始数据整理成更易于理解的形式,为后续的数据分析提供了坚实的基础。

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)

转载于:https://www.cnblogs.com/nixi8/p/4839504.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值