2011-04-25 2 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

+0

lol Я согласен! – Spence

ответ

2

Вместо

iterate(first,out()); 

вам нужно

iterate(first,out); 

Вы хотите передать функцию out к iterate, а не результат вызова out без аргументов, который является то, что вы делаете Теперь.

И точно так же

iterate(second, inn()); 

должен быть

iterate(second, inn); 
+0

woh! Я получил ответ! Это не правильно, но сейчас что-то распечатывает! благодаря! – Spence

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 
Смежные вопросы