Умножение элементов в массивах с помощью функции forEach

В настоящее время я изучаю массивы и различные способы манипулирования ими. Меня попросили: "умножить 5 на заданный массив с помощью функции forEach"

Вот мой код до сих пор.

Похоже, все работает, когда я запускаю console.log в функции forEach, но когда я записываю консоль для массива, он читается как undefined.

let multiplyArray = [1, 11, 7, 3, 8, 2, 3, 2, 10, 3, 6, 2, 5];

function multiplyNumbers() {
  let numbers;
  multiplyArray.forEach(function(element) {
    let fiveTimesNum;
    fiveTimesNum = (element * 5);
    element = fiveTimesNum;
    console.log(element)
  });
  console.log('The array(element) value is read out correctly, but when I console log the array its value is ↓')
  return numbers
}
multiplyArray = (multiplyNumbers());
console.log(multiplyArray);

Присвоение значения element не обновляет существующий массив.

mykaf 21.11.2022 23:07

Вы возвращаете numbers, но ничего не добавили в эту переменную

Portal 21.11.2022 23:08

element — это просто значение, а не ссылка на элемент в индексе. Теперь большая проблема в том, что вы определили числа и никогда ничего им не присваиваете. Вы потом возвращаете. Вы хотите использовать map()

epascarello 21.11.2022 23:09
const multiplyNumbers = () => multiplyArray.map(v => v * 5);
epascarello 21.11.2022 23:17

Есть ли способ сделать это без (элемента), который обновит существующий массив?

Brad 21.11.2022 23:19
Создайте ползком, похожим на звездные войны, с помощью CSS и Javascript
Создайте ползком, похожим на звездные войны, с помощью CSS и Javascript
Если вы веб-разработчик (или хотите им стать), то вы наверняка гик и вам нравятся "Звездные войны". А как бы вы хотели, чтобы фоном для вашего...
учебник по Javascript
учебник по Javascript
JavaScript - это язык программирования, который обычно используется для добавления интерактивности и других динамических функций на веб-сайты. Он...
Как использовать d3.js для рисования 2D SVG-элементов в приложении Angular?
Как использовать d3.js для рисования 2D SVG-элементов в приложении Angular?
D3.js - это обширная библиотека, используемая для привязки произвольных данных к объектной модели документа (DOM). Мы разберем основные варианты...
Освоение принципов SOLID в JavaScript: Пошаговое руководство
Освоение принципов SOLID в JavaScript: Пошаговое руководство
Принцип единой ответственности (SRP): класс должен иметь только одну причину для изменения. Другими словами, у него должна быть только одна...
JavaScript - For Loop
JavaScript - For Loop
Наиболее используемая компактная форма оператора цикла.
Неделя 1 - Карточки с временной шкалой
Неделя 1 - Карточки с временной шкалой
Поскольку это была первая неделя, я решил начать с простого. Предполагалось, что у меня будет временная шкала с несколькими карточками, которые можно...
0
5
74
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Числа никогда не определялись правильно, см. пример ниже.

Вы можете использовать сопоставленный массив для возврата правильных данных.

let multiplyArray = [1, 11, 7, 3, 8, 2, 3, 2, 10, 3, 6, 2, 5];

function multiplyNumbers() {
  multiplyArray.forEach(function(element) {
    let fiveTimesNum;
    fiveTimesNum = (element * 5);
    element = fiveTimesNum;
    console.log(element)
  });
  console.log('The array(element) value is read out correctly, but when I console log the array its value is ↓')
  return multiplyArray
}
multiplyArray = (multiplyNumbers());
console.log(multiplyArray);

Есть ли способ сделать это без использования (параметра элемента), который будет обновлять существующий массив без необходимости сопоставления?

Brad 21.11.2022 23:20
Ответ принят как подходящий

Если вы хотите изменить массив multiplyArray на месте, вы можете сделать это следующим образом:

let multiplyArray = [1, 11, 7, 3, 8, 2, 3, 2, 10, 3, 6, 2, 5];

multiplyArray.forEach(function(n,i,a){a[i]=5*n;});

console.log(multiplyArray);

Я новичок в изучении массивов. В любом случае вы могли бы написать тот же код без использования сокращенного метода => и вместо этого использовать его как функцию, чтобы я мог лучше понять, что происходит?

Brad 21.11.2022 23:25

Нет ничего проще :D ... ( (n,i,a)=>...) это определение функции)

Carsten Massmann 21.11.2022 23:26

Из задачи кажется, что вы должны обновить данный массив. С циклом forEach вы можете ссылаться на массив, который вы зацикливаете, вместе с индексом и значением

let multiplyArray = [1, 11, 7, 3, 8, 2, 3, 2, 10, 3, 6, 2, 5];
multiplyArray.forEach(function(val, i, arr){
    arr[i] = val*5;
})

Другие вопросы по теме