В настоящее время я изучаю массивы и различные способы манипулирования ими. Меня попросили: "умножить 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);
Вы возвращаете numbers
, но ничего не добавили в эту переменную
element — это просто значение, а не ссылка на элемент в индексе. Теперь большая проблема в том, что вы определили числа и никогда ничего им не присваиваете. Вы потом возвращаете. Вы хотите использовать map()
const multiplyNumbers = () => multiplyArray.map(v => v * 5);
Есть ли способ сделать это без (элемента), который обновит существующий массив?
Числа никогда не определялись правильно, см. пример ниже.
Вы можете использовать сопоставленный массив для возврата правильных данных.
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);
Есть ли способ сделать это без использования (параметра элемента), который будет обновлять существующий массив без необходимости сопоставления?
Если вы хотите изменить массив 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);
Я новичок в изучении массивов. В любом случае вы могли бы написать тот же код без использования сокращенного метода => и вместо этого использовать его как функцию, чтобы я мог лучше понять, что происходит?
Нет ничего проще :D ... ( (n,i,a)=>...)
это определение функции)
Из задачи кажется, что вы должны обновить данный массив. С циклом 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;
})
Присвоение значения
element
не обновляет существующий массив.