Передача не объявленных переменных в функцию
Есть вот такой код, в который мы передаем пустой массив и должны положить через функцию, значения из-за того что i за функцией не объявлена ее приходится объявлять, после чего m[i] в функции всегда берет 0 элемент, как можно этого избежать?
Текущий вывод: [5.1, 5.1, 5.1, 5.1]
Желаемый вывод: [0.5, 1.5, 2.5, 5]
let m = [0.1, 0.3, 0.5, 1];
let n = [];
let i = 0;
function forOutMatLab(arr, expression) {
for (let i = 0; i < m.length; i++) {
arr.push(expression);
}
}
forOutMatLab(n, m[i] + 1 * 5);
console.log(n);
Ответы (3 шт):
let m = [0.1, 0.3, 0.5, 1];
let n = [];
function forOutMatLab(arr, expression) {
for (let i = 0; i < m.length; i++) {
arr.push(expression(m[i]));
}
}
forOutMatLab(n, a => a + 1 * 5);
console.log(n);
Не знаю как должен получиться желаемый вывод: [5.1, 6.1, 7.1, 8.1]
Мне кажется вы апшиплись.
В примере ниже каждый элемент исходного массива умножается на 5:
let m = [0.1, 0.3, 0.5, 1];
let n = [];
let i = 0;
function forOutMatLab(arr, expression) {
for (let i = 0; i < m.length; i++) {
arr.push(expression(m[i]));
}
}
forOutMatLab(n, el => el * 5);
console.log(n);
Не знаю, чем вы тут занимаетесь. Никакой функции передавать expression вообще нет смысла, используйте array.map(el => el *5); и всё. Математическое выражение тоже сомнительное, я здесь записал три варианта понимания выражения.
let m = [0.1, 0.3, 0.5, 1];
let n = m.map(item => item *5);
let o = m.map(item => (item + 1)*5);
let p = m.map(item => item + 1 *5);
console.log(n);
console.log(o);
console.log(p);
А здесь вообще получаем результат без создания переменной. Не то, что объявления нечитаемой функции:
let m = [0.1, 0.3, 0.5, 1];
console.log(m.map(item => item * 5));