Мне нужна помощь в понимании этой математики - PullRequest
0 голосов
/ 04 мая 2020

У меня есть функция, которая предназначена для умножения всех значений, перечисленных в массивах ниже.
Функция работает, но я не понимаю, как выполняется математика, что касается итерации J.
В первой поездке через для l oop J равен 0.
Значения будут равны [1,2] [0], что должно быть равно 0 (1 * 2 * 0 = 0 ).
Но ответ 1 ...
Я не понимаю, как это уравнение играет. Вот как моя консоль регистрирует информацию:

 array: 1,2 J: 0  answer: 1;
 array: 1,2 J: 1  answer: 2;
 array: 3,4 J: 0  answer: 6;
 array: 3,4 J: 1  answer: 24;
 array: 5,6,7 J: 0  answer: 120;
 array: 5,6,7 J: 1  answer: 720;
 array: 5,6,7 J: 2  answer: 5040;

JS код:

function multiplyAll(arr) {
  var product = 1;

  for (var i = 0; i < arr.length; i++) {
    for (var j = 0; j < arr[i].length; j++) {
      product = product * arr[i][j];
    }
  }
  return product;
}


multiplyAll( [ [1, 2], [3, 4], [5, 6, 7] ] );

Ответы [ 3 ]

2 голосов
/ 04 мая 2020

Первый l oop идет в каждый массив. Это означает: arr[i] = [1,2] , [3,4], [5,6,7]. Второй l oop идет к каждому элементу текущего массива. arr[i][j] = 1, 2, 3, 4...

В конце все значения умножаются.

2 голосов
/ 04 мая 2020

Значения будут тогда [1,2] [0], ~~, которые должны равняться 0 (1 * 2 * 0 = 0) ~~.

это неправильно. реальная операция (1 * 2) только

let doubleArray = [ [1, 2], [3, 4], [5, 6, 7] ]
let i = 0
let j = 0
console.log( doubleArray[i][j] ) // --> 1

i и j являются только индексами в ваших таблицах, они не используются ни в каких математических вычислениях

ваш код эквивалентен (без использования индексов я и к)

function multiplyAll(doubleArray)
  {
  let product = 1
    ;
  for (let inArray of doubleArray)
    {
    for (let num of inArray)
      {
      product *= num
      }
    }
  return product
  }
let result  = multiplyAll( [ [1, 2], [3, 4], [5, 6, 7] ] )
  ;
console.log( result )  //  5040  
2 голосов
/ 04 мая 2020

Вы никогда не умножаете на ноль. «i» выполняет итерацию по каждому элементу массива (сначала [1, 2], затем [3, 4], затем [5, 6, 7]), а затем «j» выполняет итерацию по каждому элементу всех этих массивов внутри основной массив. Так, например, в первой итерации arr [i] [j] представляет «1».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...