Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.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 每n次跳过n项,增加n 1_Javascript - Fatal编程技术网

Javascript 每n次跳过n项,增加n 1

Javascript 每n次跳过n项,增加n 1,javascript,Javascript,这可能是一个奇怪的问题,因为我有一个解决方案(见下文),但我希望有人能向我展示一种更简洁或可读的方法: 我创建了一个输出以下数组的循环: [0,1,3,6,10,15,21,28,36,45,55,66,78,91] 数字之间的差距越来越大: 1-0=1 3-1=2 6-3=3 10-6=4 … 91-78=13 等等 我创建了两个变量,step跟踪间隙大小,count跟踪间隙中的当前“位置”计数向下计数到零,然后将步长增加1 var output = []; var step = 0; v

这可能是一个奇怪的问题,因为我有一个解决方案(见下文),但我希望有人能向我展示一种更简洁或可读的方法:

我创建了一个输出以下数组的循环:

[0,1,3,6,10,15,21,28,36,45,55,66,78,91]

数字之间的差距越来越大:

  • 1-0=1
  • 3-1=2
  • 6-3=3
  • 10-6=4
  • 91-78=13
等等

我创建了两个变量,
step
跟踪间隙大小,
count
跟踪间隙中的当前“位置”<代码>计数向下计数到零,然后将
步长
增加1

var output = [];
var step = 0;
var count = 0;

for (var i = 0; i < 100; i++) {
  if (count == 0){
    step += 1;
    count = step;
    output.push(i);
  }
  count -= 1;
}
var输出=[];
var阶跃=0;
var计数=0;
对于(变量i=0;i<100;i++){
如果(计数=0){
步骤+=1;
计数=步长;
输出推力(i);
}
计数-=1;
}

您可以尝试以下方法:

var output = [];
var total = 0;

for (var i=1; i < 100; i++) {
    output.push(total);
    total += i;
}
var输出=[];
var合计=0;
对于(变量i=1;i<100;i++){
输出。推送(总);
总数+=i;
}

数字之间的间隔只是每一步增加一个,因此for循环应该能够跟踪此变化。

您可以尝试以下方法:

var output = [];
var total = 0;

for (var i=1; i < 100; i++) {
    output.push(total);
    total += i;
}
var输出=[];
var合计=0;
对于(变量i=1;i<100;i++){
输出。推送(总);
总数+=i;
}

数字之间的间隔只是每一步增加一个,因此for循环应该能够跟踪此更改。

您应该跳过无用的迭代。如果需要100个数字的序列,请使用

var output = [];
var step = 0;
for (var i = 0; i < 100; i++) {
  step += i;
  output.push(step);
}
所以你也可以这样做

var output = [];
for (var i = 0; i < 100; i++) {
  output.push(i * (i+1) / 2);
}
var输出=[];
对于(变量i=0;i<100;i++){
输出推力(i*(i+1)/2);
}

您应该跳过无用的迭代。如果需要100个数字的序列,请使用

var output = [];
var step = 0;
for (var i = 0; i < 100; i++) {
  step += i;
  output.push(step);
}
所以你也可以这样做

var output = [];
for (var i = 0; i < 100; i++) {
  output.push(i * (i+1) / 2);
}
var输出=[];
对于(变量i=0;i<100;i++){
输出推力(i*(i+1)/2);
}

您可以使用此解决方案保存total helper变量:

var output = [0]

for (var i = 1; i < 14; i++) {
  output.push(output[i - 1] + i)
}

console.log(output) // [ 0, 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 66, 78, 91 ]
这里不需要额外的计数器变量。我使用
concat
,因为它返回递归调用所需的数组,其中
push
返回新的数组长度。
concat
的参数是一个数组,其中有一个元素要添加新值


尝试使用此解决方案保存total helper变量:

var output = [0]

for (var i = 1; i < 14; i++) {
  output.push(output[i - 1] + i)
}

console.log(output) // [ 0, 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 66, 78, 91 ]
这里不需要额外的计数器变量。我使用
concat
,因为它返回递归调用所需的数组,其中
push
返回新的数组长度。
concat
的参数是一个数组,其中有一个元素要添加新值


试试看

这似乎更适合-不确定这是一个多么好的问题,我不知道它的存在!这似乎更适合-不确定这是一个很好的问题,不知道存在!很好,我知道我把它复杂化了。非常简单的解决方案。很好,我知道我把它复杂化了。非常简单的解决方案。