2016-05-18 28 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

相關問題