求数组的转换算法

大雷神 2012-10-25 04:36:00
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}]},];
...全文
170 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
泡泡鱼_ 2012-10-25
  • 打赏
  • 举报
回复
描述混乱,筛选后的data2完全看不出什么规律来。鉴定完毕
yibey 2012-10-25
  • 打赏
  • 举报
回复

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
的最大值
a547428081 2012-10-25
  • 打赏
  • 举报
回复
呵呵,做出这个列子真要死很多脑细胞的!
yibey 2012-10-25
  • 打赏
  • 举报
回复
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的最大值)
cdefg198 2012-10-25
  • 打赏
  • 举报
回复
脑袋不好使啊
shuaiaiting1 2012-10-25
  • 打赏
  • 举报
回复
很纠结啊。
先用相关json解析组件或类讲json字符串转换为对象,再对该对象linq筛选、处理!
要脑壳好使的人用!

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧