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}]},];
{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}]},];
先用相关json解析组件或类讲json字符串转换为对象,再对该对象linq筛选、处理!
要脑壳好使的人用!
{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的最大值)
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
的最大值