Написать функцию, которая возвращает преобразованный массив на основе функции, переданной в качестве параметра
я должна написать функцию, которая принимает два аргумента. Первый — исходный массив чисел, второй аргумент — callback-функция, которая будет вызываться при переборе элементов массива.
map([3, 6, 9], function(el) { return el + 3; }) // returns [6, 9, 12]
map([1, 2, 4, 7], function (el) { return el * 2; }) // returns [2, 4, 8, 14]
я добавила функцию которая бужет перебирать масив, но не понию как ето сложить все вместе
function map(arr, function) {
function forEach(arr) {
let result = '';
for (const item of arr) {
result += item + ' '
}
return result;
}
}
console.log(map([2, 5, 8], function (el) { return el * 2; }));
Ответы (2 шт):
Автор решения: Yakov Botov
→ Ссылка
предлагаю вот такой вариант
function map(arr, callback) {
const acc = []
for(let item of arr) {
acc.push(callback(item))
}
return acc
}
ссылка на sandbox: https://codesandbox.io/s/gallant-mahavira-i709qd?file=/src/index.js:74-145
Автор решения: Михаил Камахин
→ Ссылка
В данном случае у функции myMap this - это массив, от которого вызывается функция myMap.
Функция map принимает 4 параметра -
- currentValue - Текущий обрабатываемый элемент массива
- index - Индекс текущего обрабатываемого элемента в массиве
- array - Массив, по которому осуществляется проход
- thisArg - Необязательный параметр. Значение, используемое в качестве this при вызове функции callback
Array.prototype.myMap = function(callback) {
const newArr = [];
for (let i = 0; i < this.length; i++) {
const resultItem = callback(this[i], i, this, this);
newArr.push(resultItem);
}
return newArr;
};
console.log([1, 2, 3].myMap(item => item * 2));
console.log([4, 5, 6].myMap((item, i) => i * 5));