2016-05-18 24 views
-2
function countBy(x, n) { 

    var z = []; 

    for (i = 0; i < n; i++) { 

     z.push(z[i] + x); 
    } 

    return z; 

} 

我从测试代码Test.assertSimilar(countBy(1,5),[1,2,3,4,5])得到的结果是[null,null,null,null,null] 。我认为这是因为z数组最初是空的。我在这个问题上寻找了一些帮助,但我似乎无法找到任何。谢谢!如何创建一个返回长度为(n)的倍数为(x)的函数?

+0

你需要更多的细节。通过'Test.assertSimilar(actual,expected)',我们检查'actual'值等于(===)'expected'值。那么你是在用count_y(x,n)'来执行它是'x'的第一个倍数是0还是1呢?不同之处在于结果数组是'[0,1,2,3,4]'而不是'[1,2,3,4,5]';以后是你用来比较的东西。或者也许你期待Test.assertSimilar返回false?零是所有数字的倍数,所以我个人会开始拍摄,以0开始我的第一次乘法。 – 8protons

回答

1
// z is the variable you're building. `z[i]` does not exist yet. 
z.push(z[i] + x); 

// You want this.. 
z.push(i*x); 

https://jsfiddle.net/9h911x28/

也偏爱的事,但你可能也想开始i出为1,而不是0

for (i = 1; i <= n; i++) 
+1

首选项不会覆盖_good编程practice_,这是我们从'i = 0'开始的,因为这是第一个索引几乎所有编程语言中的数组元素。因此,即使您可能会在索引1处启动_your_数组,您也会有一个未使用且浪费的索引为0.此外,与您一起工作的任何程序员在访问您的阵列时都会因此移动而不知所措。 – 8protons

+0

@ 8protons我同意你的看法,但在这种情况下,数组将被索引为0,因为它没有被“i”键控,而是它具有“i * x”的值,所以当你赢了't想要乘以0. –

+0

那么你的建议是从你的解决方案的偏好问题还是_事项或实用性问题? – 8protons

相关问题