Javascript 需要在js数组中增加值

Javascript 需要在js数组中增加值,javascript,arrays,Javascript,Arrays,我正在构建一个动态的svg日历条。为了计算条形图需要多少分区(以月为单位),我将条形图的总宽度除以日期差(以月为单位),以计算每个分区中应该有多少像素 基本示例:提供的两个日期之间有3个月;日历栏的宽度为935像素。935/3(四舍五入)=312。日历条的每个部分的宽度应约为312像素。 现在来看问题。我使用一个基本循环来运行数学运算,并将值推送到javascript数组中。这很好用。我想做的是通过将数组中的每个后续值添加到前一个值来增加它 示例:第一个值是312,第二个值是614(312+31

我正在构建一个动态的
svg日历条
。为了计算条形图需要多少分区(以月为单位),我将条形图的总宽度除以日期差(以月为单位),以计算每个分区中应该有多少像素

基本示例:
提供的两个日期之间有3个月;日历栏的宽度为935像素。935/3(四舍五入)=312。日历条的每个部分的宽度应约为312像素。

现在来看问题。我使用一个基本循环来运行数学运算,并将值推送到javascript数组中。这很好用。我想做的是通过将数组中的每个后续值添加到前一个值来增加它

示例:
第一个值是312,第二个值是614(312+312),最后一个值是936(312+614)或(312+312+312),但数学运算必须有效。

出于某种原因,我一辈子都不知道如何让它以这种方式推动价值观

这是我目前正在使用的代码。(请注意,正在更新的一些变量可能会在脚本的其他地方声明)

函数divideCalendarBar(){
var calBarWidth=935;
var calBarDivisions=数学圆(calBarWidth/cb_dateDiff);
var leftPositions=calBarDivisions;
var leftPositionsArray=新数组();
对于(var i=1;i

非常感谢你们这些好朋友的任何想法

如果我们将数组的最后一个值添加到
leftPositions
中,那么您的问题就解决了

for (var i = 1; i < cb_dateDiff; i++) {    
     if(leftPositionsArray.length > 0){
         leftPositionsArray.push(leftPositions+[leftPositionsArray.length-1]); 
      }else{
           leftPositionsArray.push(leftPositions); 
      } 
};
for(var i=1;i0){
leftPositionsArray.push(leftPositions+[leftPositionsArray.length-1]);
}否则{
leftPositionsArray.push(左位置);
} 
};

如果我们将数组的最后一个值添加到
leftPositions
,那么您的问题就解决了

for (var i = 1; i < cb_dateDiff; i++) {    
     if(leftPositionsArray.length > 0){
         leftPositionsArray.push(leftPositions+[leftPositionsArray.length-1]); 
      }else{
           leftPositionsArray.push(leftPositions); 
      } 
};
for(var i=1;i0){
leftPositionsArray.push(leftPositions+[leftPositionsArray.length-1]);
}否则{
leftPositionsArray.push(左位置);
} 
};

因此我认为您应该能够做到以下几点

for (var i = 1; i <= cb_dateDiff; i++) {     
    leftPositionsArray.push(leftPositions * i);
};

for(var i=1;i因此我认为您应该能够执行以下操作

for (var i = 1; i <= cb_dateDiff; i++) {     
    leftPositionsArray.push(leftPositions * i);
};
(变量i=1;i)的

第一个值为312,第二个值为614(312+312),最终值为936(312+614)或(312+312+312)

所以你可以说第一个值是
312x1
,第二个值是
312+312=312x2
,第三个值是
312+312+312=312x3

因为您已经有一个索引从1到(大概)3的循环:

for(var i=1;i
应该有用

第一个值为312,第二个值为614(312+312),最终值为936(312+614)或(312+312+312)

所以你可以说第一个值是
312x1
,第二个值是
312+312=312x2
,第三个值是
312+312+312=312x3

因为您已经有一个索引从1到(大概)3的循环:

for(var i=1;i

应该有效

答案最初由Matt Burland提供:

leftPositionsArray.push(leftPositions * i);

谢谢Matt和其他人。

答案最初由Matt Burland提供:

leftPositionsArray.push(leftPositions * i);

谢谢Matt和其他人。

左位置Sarray.push(左位置*i);
?这也很有效。好了,伙计们,在我开始发布愚蠢的问题之前,我要确保我喝了更多的咖啡。谢谢你逗我笑!
左位置Sarray.push(左位置*i)
?这也很有效。好了,伙计们,在我开始发布愚蠢的问题之前,我要确保我喝了更多的咖啡。谢谢你的幽默!我认为这不会起作用,因为你永远不会得到
I===3
,因为你使用的是小于而不是小于或-equal@jwags:因为我们不知道什么是
cb_dataDiff
s值a实际上是,然后是否。从OP中,您可以看到
cb_dateDiff
是应该在leftPositionArray中结束的元素数。因为
leftPositions
被定义为
Math.round(calBarWidth/cb_dateDiff)
我们可以看到循环应该运行
cb_dateDiff
次,因为
i
从1开始,所以它应该是
我认为这不会起作用,因为你永远不会得到
i==3
,因为你使用的是小于而不是小于或-equal@jwags:因为我们不知道
cb_dataDiff
s值实际上是什么,然后是否。从OP中,您可以看到
cb_dateDiff
是应该在leftPositionArray中结束的元素数。因为
leftPositions
被定义为
Math.round(calBarWidth/cb_dateDiff)
我们可以看到循环应该运行
cb_dateDiff
次,因为
i
从1开始,它应该是