2011-04-25 30 views
0

我已經寫下了以下代碼。這個想法是遍歷兩個數組,以便在每個索引處將內容相乘在一起,然後將這些內容記住並添加到下一個索引ect的乘積中。我無法弄清楚我寫的代碼有什麼問題。誰能告訴我它有什麼問題?謝謝!兩個陣列上的函數

function main() { 
    var first = [1,2,3,4]; 
    var second = [5,6,7,8]; 
    var sum = 0; 

    function iterate(a, fun) { 
     var n; n = a.length; 
     var i; 

     for (i=0; i<n; i++) { 
      fun(a[i]); 
     } 
    } 

    multiply(); 

    function multiply(x,y) { 
     iterate(first, out()); 

     function out(total1) { 
      x = total1; 

      iterate(second, inn()); 

      function inn(total2){ 

       y = total2; 

       sum += x*y; 

      } 
     } 
    } 

    document.write(sum); 
} 

main(); 
+0

的格式是可怕的,爲一個:) – alex 2011-04-25 06:08:55

+0

大聲笑我同意! – Spence 2011-04-25 06:17:04

回答

2

而不是

iterate(first,out()); 

你需要

iterate(first,out); 

你想通過函數outiterate,呼籲out不帶參數的不是其結果是你在做什麼現在。

而且同樣

iterate(second, inn()); 

應該

iterate(second, inn); 
+0

woh!我得到了答案!這不是正確的,但它正在打印出一些東西!謝謝! – Spence 2011-04-25 06:22:21

0

我知道你要求爲你的現有代碼修復,但這裏的一種替代方案:

var first = [1, 2, 3, 4], second = [5, 6, 7, 8]; 

first.reduce(function (x, y, i) { 
    return x + y * second[i]; 
}, 0); // => 70