var  data1=[{ id:1,HMAre:1,data:[{day:1,a:1,b:2,c:3},{day:2,a:2,b:6,c:10},{day:3,a:5,b:8,c:10}]},
   {id:2,HMAre:2,data:[{day:1,a:1.5,b:2.5,c:3.8},{day:2,a:2,b:6,c:10},{day:3,a:5,b:8,c:10}]},
  {id:3,HMAre:1,data:[{day:1,a:1,b:2,c:3},{day:2,a:2,b:6,c:10},{day:3,a:5,b:8,c:11}]},
 {id:4,HMAre:3,data:[{day:1,a:5,b:2,c:3},{day:7,a:2,b:6,c:10},{day:10,a:5,b:8,c:12}]}];描述data1:HMAre可以重复 data中day的值不会重复(不是死的)筛选成data2的格式(要求 按照day进行分组 然后统计HMAre的相关数据(取 a  b c的最大值))
var  data2 =[{day:1,data:[{HMAre:1,a:5,b:2.5,c:3.8},{HMAre:2,a:1.5,b:2.5,c:3.8},{HMAre:3,a:1,b:2,c:3}]},
     {day:2,data:[{HMAre:1,a:5,b:6,c:10},{HMAre:2,a:1.5,b:2.5,c:3.8},  {HMAre:3,a:1,b:2,c:3}]},];

解决方案 »

  1.   

    很纠结啊。
    先用相关json解析组件或类讲json字符串转换为对象,再对该对象linq筛选、处理!
    要脑壳好使的人用!
      

  2.   

    var data2 =[{day:1,data:[{HMAre:1,a:5,b:2.5,c:3.8},{HMAre:2,a:1.5,b:2.5,c:3.8},{HMAre:3,a:1,b:2,c:3}]},
    {day:2,data:[{HMAre:1,a:5,b:6,c:10},{HMAre:2,a:1.5,b:2.5,c:3.8}, {HMAre:3,a:1,b:2,c:3}]},]; 楼主你问问题钱先确定你的逻辑好吗,,真心有点看不懂{day:1,data:[{HMAre:1,a:5,b:2.5,c:3.8}以这个数据为例 为什么day:1 HWARE:1 的情况下a:=5(这里的a是所有day1中的最大值)
    {HMAre:2,a:1.5,b:2.5,c:3.8} 而这个时候a:1(这里的a是day:1 HWARE:2  day1的最大值)
      

  3.   


     var data1 = [{ id: 1, HMAre: 1, data: [{ day: 1, a: 1, b: 2, c: 3 }, { day: 2, a: 2, b: 6, c: 10 }, { day: 3, a: 5, b: 8, c: 10}] },
    { id: 2, HMAre: 2, data: [{ day: 1, a: 1.5, b: 2.5, c: 3.8 }, { day: 2, a: 2, b: 6, c: 10 }, { day: 3, a: 5, b: 8, c: 10}] },
    { id: 3, HMAre: 1, data: [{ day: 1, a: 1, b: 2, c: 3 }, { day: 2, a: 2, b: 6, c: 10 }, { day: 3, a: 5, b: 8, c: 11}] },
    { id: 4, HMAre: 3, data: [{ day: 1, a: 5, b: 2, c: 3 }, { day: 7, a: 2, b: 6, c: 10 }, { day: 10, a: 5, b: 8, c: 12}]}];
            var daylength = data1[0].data.length;        var data2 = [];        for (var i = 0; i < daylength; i++) {
                var temp = {};
                temp.day = data1[0].data[i].day;
                temp.data = [];
                var temp_HMAre = [];            for (var j = 0; j < data1.length; j++) {
                    var nHMAre = data1[j].HMAre
                    var ndata = data1[j].data[i];
                    if (temp_HMAre[nHMAre]) {
                        if (temp_HMAre[nHMAre].a < ndata.a) {
                            temp_HMAre[nHMAre].a = ndata.a;
                        }
                        if (temp_HMAre[nHMAre].b < ndata.b) {
                            temp_HMAre[nHMAre].b = ndata.b;
                        }
                        if (temp_HMAre[nHMAre].c < ndata.c) {
                            temp_HMAre[nHMAre].c = ndata.c;
                        }
                    }
                    else {
                        temp_HMAre[nHMAre] = { HMAre: nHMAre, a: ndata.a, b: ndata.b, c: ndata.c };
                        temp.data.push(temp_HMAre[nHMAre]);
                    }
                }
                data2.push(temp);
            }
    楼主自己写的测试结果真心看不出来什么逻辑。。
    我自己猜测楼主是否是想要先按照day分组,然后按照HMAre分组取出这种情况下abc
    的最大值
      

  4.   

    描述混乱,筛选后的data2完全看不出什么规律来。鉴定完毕