Рубрики
Без рубрики

Гнездо для петель в JavaScript

Если у вас проблемы с пониманием вложенности FreeCodeCamp для вызова петлей, не волнуйтесь. Мы получили твою спину. В этой проблеме вы должны заполнить функцию MultiplingAll () и принимает многомерный массив в качестве аргумента. Помните, что многомерный массив, иногда называемый 2D-массивом, это просто массив массивов,

Автор оригинала: FreeCodeCamp Community Member.

Если у вас проблемы с пониманием вложенности FreeCodeCamp для вызова петлей, не волнуйтесь. Мы получили твою спину.

В этой проблеме вы должны заполнить MultiplingAll () Функция и принимает многомерный массив в качестве аргумента. Помните, что многомерный массив, иногда называемый 2D-массивом, является лишь массивом массивов, например, [[1,2], [3,4], [5,6]] Отказ

В редакторе справа, MultiplingAll () определяется следующим образом:

function multiplyAll(arr) {
  var product = 1;
  // Only change code below this line

  // Only change code above this line
  return product;
}

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

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

Есть много разных способов решить эту проблему, но мы сосредоточимся на самым простым методу, используя для петли.

Настроить для петлей

Потому что arr многомерный массив, вам понадобится два для Цветные петли: один, чтобы пережить каждую из массивов подзаготовителей, а другой, чтобы петлю через элементы в каждом подпараситете.

Петля через внутренние массивы

Для этого установить для петля, как вы сделали в предыдущих проблемах:

function multiplyAll(arr) {
  let product = 1;
  // Only change code below this line
  for (let i = 0; i < arr.length; i++) {
    
  }
  // Only change code above this line
  return product;
}

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

Обратите внимание, что мы используем Пусть вместо var для петли и объявить Продукт Отказ В этой задаче вы не заметите разницы между ними, но в целом это хорошая практика для использования ES6’s Const и Пусть когда вы сможете. Вы можете узнать больше о том, почему В этой статье Отказ

Теперь журнал каждая из подпрограмм к консоли:

function multiplyAll(arr) {
  let product = 1;
  // Only change code below this line
  for (let i = 0; i < arr.length; i++) {
    console.log(arr[i]);
  }
  // Only change code above this line
  return product;
}

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

Потому что вы звоните MultiplingAll () с [[1,2], [3,4], [5,6,7]] Внизу вы должны увидеть следующее:

[ 1, 2 ]
[ 3, 4 ]
[ 5, 6, 7 ]

Петля через элементы в каждом подзаготовительном

Теперь вам нужно впитывать каждый номер в подпрограммах, которые вы только что вошли в консоль.

Удалить console.log (ARR [I]); и создать еще один для петля внутри того, что ты только что написал:

function multiplyAll(arr) {
  let product = 1;
  // Only change code below this line
  for (let i = 0; i < arr.length; i++) {
    for (let j = 0; j < arr[i].length; j++) {
      
    }
  }
  // Only change code above this line
  return product;
}

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

Помните, что, для внутренней петли, нам нужно проверить Длина ARR [I] С ARR [I] является одним из подзаготовок, которые мы посмотрели на ранее.

Теперь журнал ARR [I] [J] к консоли, чтобы увидеть каждый из отдельных элементов:

function multiplyAll(arr) {
  let product = 1;
  // Only change code below this line
  for (let i = 0; i < arr.length; i++) {
    for (let j = 0; j < arr[i].length; j++) {
      console.log(arr[i][j]);
    }
  }
  // Only change code above this line
  return product;
}

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

Наконец, умножить Продукт каждым элементом в каждом из подзарядных массивов:

function multiplyAll(arr) {
  let product = 1;
  // Only change code below this line
  for (let i = 0; i < arr.length; i++) {
    for (let j = 0; j < arr[i].length; j++) {
      product *= arr[i][j];
    }
  }
  // Only change code above this line
  return product;
}

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

Если вы регистрируете Продукт К консоли, вы увидите правильный ответ на каждый тестовый случай:

function multiplyAll(arr) {
  let product = 1;
  // Only change code below this line
  for (let i = 0; i < arr.length; i++) {
    for (let j = 0; j < arr[i].length; j++) {
      product *= arr[i][j];
    }
  }
  // Only change code above this line
  console.log(product);
  return product;
}

multiplyAll([[1,2],[3,4],[5,6,7]]);
6  // [[1], [2], [3]]
5040  // [[1, 2], [3, 4], [5, 6, 7]]
54  // [[5, 1], [0.2, 4, 0.5], [3, 9]]

Более близкий взгляд

Если вы все еще не уверены, почему код выше работает, не волнуйтесь – вы не одиноки. Работа со вложенным петельм сложно, и даже опытные разработчики могут запутаться.

В таких случаях, это может быть полезно для регистрации чего-то более подробного к консоли. Вернитесь к вашему коду и журнал `Подстрасание $ {i}: $ {arr [i]}` на консоль незадолго до внутреннего для петля:

function multiplyAll(arr) {
  let product = 1;
  // Only change code below this line
  for (let i = 0; i < arr.length; i++) {
    console.log(`Sub-array ${i}: ${arr[i]}`);
    for (let j = 0; j < arr[i].length; j++) {
      product *= arr[i][j];
    }
  }
  // Only change code above this line
  return product;
}

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

Во внешнем для Цикл, каждая итерация проходит через подзарядки в arr Отказ Вы должны увидеть это в консоли:

Sub-array 0: 1,2
Sub-array 1: 3,4
Sub-array 2: 5,6,7

Обратите внимание, что мы используем Шаблонные литералы выше. `Подстрасание $ {i}: $ {arr [i]}` такой же, как «Подмассори» + I + ':' + ARM [I] , намного легче написать.

Сейчас во внутреннем для петля, журнал `Элемент $ {j}: $ {arr [i] [j]}` к консоли:

function multiplyAll(arr) {
  let product = 1;
  // Only change code below this line
  for (let i = 0; i < arr.length; i++) {
    console.log(`Sub-array ${i}: ${arr[i]}`);
    for (let j = 0; j < arr[i].length; j++) {
      console.log(`Element ${j}: ${arr[i][j]}`);
      product *= arr[i][j];
    }
  }
  // Only change code above this line
  return product;
}

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

Внутренняя для Цикл проходит через каждый элемент в каждом подзаготовительном массиве ( arr [i] ), поэтому вы должны увидеть это в консоли:

Sub-array 0: 1,2
Element 0: 1
Element 1: 2
Sub-array 1: 3,4
Element 0: 3
Element 1: 4
Sub-array 2: 5,6,7
Element 0: 5
Element 1: 6
Element 2: 7

Первая итерация Я хватает первую подза-массив, [1, 2] Отказ Тогда первая итерация J проходит каждый элемент в этом подзаготовительном массиве:

// i is 0
arr[0] // [1, 2];

// j is 0
arr[0][0] // 1
// j is 1
arr[0][1] // 2

-----

// i is 1
arr[1] // [3, 4]

// j is 0
arr[1][0] // 3
// j is 1
arr[1][1] // 4

...

Этот пример довольно прост, но ARR [I] [J] Все еще может быть трудно понять, не введя несколько вещей в консоль.

Одно быстрое улучшение, которое мы можем сделать, объявляет Подвеска Переменная во внешнем для петля и установка его равна ARR [I] :

function multiplyAll(arr) {
  let product = 1;
  // Only change code below this line
  for (let i = 0; i < arr.length; i++) {
    const subArray = arr[i];
    for (let j = 0; j < arr[i].length; j++) {
      product *= arr[i][j];
    }
  }
  // Only change code above this line
  return product;
}

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

Тогда просто сделайте несколько твиков в код, чтобы использовать новый Подвеска переменная вместо ARR [I] :

function multiplyAll(arr) {
  let product = 1;
  // Only change code below this line
  for (let i = 0; i < arr.length; i++) {
    const subArray = arr[i];
    for (let j = 0; j < subArray.length; j++) {
      product *= subArray[j];
    }
  }
  // Only change code above this line
  return product;
}

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

Это должно быть всем, что вам нужно знать о многомерных массивах и вложенных для петли. Теперь выйдите туда и итерации с лучшими из них!