创建从对象属性提取数据的新javascript数组
我需要将一个平面数组(其中相似的数据保存在单独的属性中)转换为一个数组,将每个属性中的数据字段分组在一起。希望一个例子能说明这一点 原始阵列:创建从对象属性提取数据的新javascript数组,javascript,arrays,Javascript,Arrays,我需要将一个平面数组(其中相似的数据保存在单独的属性中)转换为一个数组,将每个属性中的数据字段分组在一起。希望一个例子能说明这一点 原始阵列: [{"MtmDate":"2014-10-24", "MouldingID":"1233B", "ID":38, "Mtm01":5.10, "Mtm02":6.63,"Mtm03":5.84 }, {"MtmDate":"2014-10-25", "MouldingID":"1233B", "ID":39, "Mtm0
[{"MtmDate":"2014-10-24", "MouldingID":"1233B", "ID":38, "Mtm01":5.10, "Mtm02":6.63,"Mtm03":5.84 },
{"MtmDate":"2014-10-25", "MouldingID":"1233B", "ID":39, "Mtm01":5.13, "Mtm02":6.21,"Mtm03":6.64 },
{"MtmDate":"2014-10-26", "MouldingID":"1233B", "ID":40, "Mtm01":5.68, "Mtm02":5.95,"Mtm03":6.37 },
...
]
所需输出:
[{"Mtm": 1, values: [{"MtmDate": "2014-10-24", "ID":38, data: 5.10},
{"MtmDate": "2014-10-25", "ID":39, data: 5.13},
{"MtmDate": "2014-10-26", "ID":40, data: 5.68}]},
{"Mtm": 2, values: [{"MtmDate": "2014-10-24", "ID":38, data: 6.63},
{"MtmDate": "2014-10-25", "ID":39, data: 6.21},
{"MtmDate": "2014-10-26", "ID":40, data: 5.95}]},
{"Mtm": 3, values: [{"MtmDate": "2014-10-24", "ID":38, data: 5.84},
{"MtmDate": "2014-10-25", "ID":39, data: 6.64},
{"MtmDate": "2014-10-26", "ID":40, data: 6.37}]},
]
我知道我可以通过“手动”为每个数据字段设置对象并将其添加到新阵列中来实现这一点:
var mtm1 = { mtm: 1, values: [] }, mtm2 = { mtm: 2, values: [] }, mtm3 = { mtm: 3, values: [] };
var dataByPoint = [];
dataByPoint.push(mtm1);
dataByPoint.push(mtm2);
dataByPoint.push(mtm3);
然后遍历原始数组,获取每个对象的数据:
$.each(d, function(index, value) {
var details1 = { mtmDate: value.MtmDate, id: value.ID, data: value.Mtm01 };
if (details1.data) dataByPoint[0].values.push(details1);
var details2 = { mtmDate: value.MtmDate, id: value.ID, data: value.Mtm02 };
if (details2.data) dataByPoint[1].values.push(details2);
var details3 = { mtmDate: value.MtmDate, id: value.ID, data: value.Mtm03 };
if (details3.data) dataByPoint[2].values.push(details3);
});
然而,事实上有十几个这样的数据属性,这种方法似乎很冗长。有没有办法通过循环数据属性来填充新数组?使用数组的map函数
var originalArray = [{"MtmDate":"2014-10-24", "MouldingID":"1233B", "ID":38, "Mtm01":5.10, "Mtm02":6.63,"Mtm03":5.84 },
{"MtmDate":"2014-10-25", "MouldingID":"1233B", "ID":39, "Mtm01":5.13, "Mtm02":6.21,"Mtm03":6.64 },
{"MtmDate":"2014-10-26", "MouldingID":"1233B", "ID":40, "Mtm01":5.68, "Mtm02":5.95,"Mtm03":6.37 },
...
]
var expectedArray = originalArray.map(function(v){
return {mtm:v.ID, values:v}
})
var arr=[{“MtmDate”:“2014-10-24”,“moldingid”:“1233B”,“ID”:38,“Mtm01”:5.10,“Mtm02”:6.63,“Mtm03”:5.84},
{“MtmDate”:“2014-10-25”,“模制ID”:“1233B”,“ID”:39,“Mtm01”:5.13,“Mtm02”:6.21,“Mtm03”:6.64},
{“MtmDate”:“2014-10-26”,“模制ID”:“1233B”,“ID”:40,“Mtm01”:5.68,“Mtm02”:5.95,“Mtm03”:6.37}
]
var newArr=[];
对于(变量i=0;i document.write(JSON.stringify(newArr))
v
将是这里的一个对象OP需要一个整数MMM我看做一点更改这不会创建OP想要的数组Mtm
应该是索引,而不是原始数组中的ID。这不起作用-所有Mtm01、02等都需要分组在一起