Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JavaScript中构建模块化方法_Javascript_Algorithm - Fatal编程技术网

在JavaScript中构建模块化方法

在JavaScript中构建模块化方法,javascript,algorithm,Javascript,Algorithm,我有下面的代码,它符合我的要求,但是,它不是模块化的,也不是通用的。例如,我可能有一百个stats对象。有没有办法让它更通用 实际上,在dataSeries中,我只有两个对象数组。我根据它们的颜色对它们进行排序(红色、绿色)。因此,只有四个stats对象被初始化 var stats1 = {data: []} var stats2 = {data: []} var stats3 = {data: []} var stats4 = {data: []} stats1.data.push(sel

我有下面的代码,它符合我的要求,但是,它不是模块化的,也不是通用的。例如,我可能有一百个
stats
对象。有没有办法让它更通用

实际上,在
dataSeries
中,我只有两个对象数组。我根据它们的颜色对它们进行排序
(红色、绿色)
。因此,只有四个
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 stats=[],colors=[];
对于(变量i=0;i<25;i++){
push({data:[]});
}
颜色=[“红”、“绿”、“蓝”、“黄”];
colorCount=colors.length;
对于(变量i=0,len=stats.length;i
清理此问题的最简单方法是将所有变量移动到一个数组中。这是一种可能性的示例

编辑:添加了对未知颜色数的支持

var stats=[],colors=[];
对于(变量i=0;i<25;i++){
push({data:[]});
}
颜色=[“红”、“绿”、“蓝”、“黄”];
colorCount=colors.length;
对于(变量i=0,len=stats.length;i
如果您知道数据的数量,您就拥有了全部:

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] } );
}
在这两种情况下,生成的
a
数组将与示例中的相同

更新如果您有更多颜色,您可以将它们全部放入
颜色数组
中,并使用模获得匹配的颜色:

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} );
}
var numberOfData=4;
var colors=['绿色'、'红色'、'蓝色'、'粉红色'、'彩虹'];
var a=[];
对于(var i=0;i
如果您知道数据的数量,您就拥有了全部:

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] } );
}
在这两种情况下,生成的
a
数组将与示例中的相同

更新如果您有更多颜色,您可以将它们全部放入
颜色数组
中,并使用模获得匹配的颜色:

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} );
}
var numberOfData=4;
var colors=['绿色'、'红色'、'蓝色'、'粉红色'、'彩虹'];
var a=[];
对于(var i=0;i
这可能会让您了解如何将其转换为更通用的内容

a=[{ data: stats1.data[0] }, { data: stats2.data[0] }, { data: stats3.data[0] }, { data: stats4.data[0] }];

pushColor = function(stats, pos, x, color) {
    stats.data.push(self.dataSeries[pos].data.filter(function (x) {
        return x.color === color;
    }))
}

var arrayLength = a.length;
for (var i = 0; i < arrayLength; i++) {
    pushColor(a[i].data, a[1].pos, a[i].color, "green");
}
a=[{data:stats1.data[0]},{data:stats2.data[0]},{data:stats3.data[0]},{data:stats4.data[0]}];
pushColor=功能(统计、位置、x、颜色){
stats.data.push(self.dataSeries[pos].data.filter(函数(x)){
返回x.color==color;
}))
}
var arrayLength=a.长度;
对于(变量i=0;i
这可能会让您了解如何将其转换为更通用的内容

a=[{ data: stats1.data[0] }, { data: stats2.data[0] }, { data: stats3.data[0] }, { data: stats4.data[0] }];

pushColor = function(stats, pos, x, color) {
    stats.data.push(self.dataSeries[pos].data.filter(function (x) {
        return x.color === color;
    }))
}

var arrayLength = a.length;
for (var i = 0; i < arrayLength; i++) {
    pushColor(a[i].data, a[1].pos, a[i].color, "green");
}
a=[{data:stats1.data[0]},{data:stats2.data[0]},{data:stats3.data[0]},{data:stats4.data[0]}];
pushColor=功能(统计、位置、x、颜色){
stats.data.push(self.dataSeries[pos].data.filter(函数(x)){
返回x.color==color;
}))
}
var arrayLength=a.长度;
对于(变量i=0;i
迁移到codereview?您有什么想法吗?例如,代码中有没有可以“泛化”的模式?我对这种环境比较陌生。这就是为什么我首先寻找功能,而不是更通用或模块化。因为我在代码中看到了相似之处,所以我认为这应该是一种使其更加模块化的方法。@Knu Codereview是针对真实代码的。假设的代码或尚未创建的代码是离题的。这里的
self
是什么?迁移到codereview?您可能已经有了什么想法吗?例如,代码中有没有可以“泛化”的模式?我对这种环境比较陌生。这就是为什么我首先寻找功能,而不是更通用或模块化。因为我在代码中看到了相似之处,所以我认为这应该是一种使其更加模块化的方法。@Knu Codereview是针对真实代码的。假设代码或尚未创建的代码是离题的。这里的
self
是什么?非常感谢,如果我有两种以上的颜色怎么办?假设我有一个彩色对象数组颜色=['green'、'red'、'blue'、'yellow'等等]'你能不能在它们之间循环,在你到达终点后重新开始?非常感谢Will,如果我有两种以上的颜色呢?假设我有一个彩色对象数组颜色=['绿色'、'红色'、'蓝色'、'黄色',等等]'你能不能在它们之间循环,在你到达终点后重新开始?这是一个很好的答案。非常感谢alebruck,如果我有两种以上的颜色怎么办?假设'color=['green','red','blue','yellow',等等]'您希望如何与这个数组交互?循环遍历每种颜色?根据颜色排序的第一个数据。我将使用
color
数组对
dataSeries
对象进行排序。如果我错了,请纠正我。是否有一个包含多个对象的数组。每个对象都有一个名为“颜色”的属性。您想根据此属性订购此数组吗?@alebruck您甚至可以在循环中生成初始的
数组,无需手动写入该大数组。这是一个很好的答案。非常感谢alebruck,如果我有两种以上的颜色怎么办?让我们说'color=['绿色'、'红色'、'蓝色'