我有以下代码,并且符合我的要求,但是,它不是模块化的,也不是通用的。例如,我可能有一百个stats
对象。有没有办法使它更通用?
实际上,dataSeries
我只有两个对象数组。我正在根据它们的颜色对其进行分类(red, green)
。因此,只有四个stats
对象被初始化。
var stats1 = {data: []}
var stats2 = {data: []}
var stats3 = {data: []}
var stats4 = {data: []}
stats1.data.push(self.dataSeries[0].data.filter(function (x) { return x.color == "green" }))
stats2.data.push(self.dataSeries[0].data.filter(function (x) { return x.color == "red" }))
stats3.data.push(self.dataSeries[1].data.filter(function (x) { return x.color == "green" }))
stats4.data.push(self.dataSeries[1].data.filter(function (x) { return x.color == "red" }))
a=[{ data: stats1.data[0] }, { data: stats2.data[0] }, { data: stats3.data[0] }, { data: stats4.data[0] }];
好吧,如果您知道数据的数量,那么您已经掌握了全部:
var numberOfData = 4;
var a = [];
for (var i = 0; i < numberOfData; i++) {
var color = (i%2 === 0) ? 'green' : 'red';
var index = Math.floor(i/2);
var stat = {data: []};
stat.data.push( self.dataSeries[index].data.filter(function (x) { return x.color == color }) );
a.push( {data: stat.data[0] } );
}
现在看来您正在创建一个无用的stat.data
数组,如果可以,则可以通过以下方式简化代码:
var numberOfData = 4;
var a = [];
for (var i = 0; i < numberOfData; i++) {
var color = (i%2 === 0) ? 'green' : 'red';
var index = Math.floor(i/2);
var d = self.dataSeries[index].data.filter(function (x) { return x.color == color });
a.push( {data: d} );
}
a
在这两种情况下,结果数组都将与您的示例中的数组相同。
更新如果您有更多颜色,可以将它们全部放在的数组中,colors
并使用模来获取匹配的颜色:
var numberOfData = 4;
var colors = ['green', 'red', 'blue', 'pink', 'rainbow'];
var a = [];
for (var i = 0; i < numberOfData; i++) {
var color = colors[i%colors.length];
var index = Math.floor(i/2);
var d = self.dataSeries[index].data.filter(function (x) { return x.color == color });
a.push( {data: d} );
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句