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开始,它应该是