JS Array Method Scratch
forEach
Standard Definition: arr.forEach(callback(element, index, array), thisArg)
const myForEach = (arr, callback) => {
for (let i = 0; i <= arr.length - 1; i++) {
callback(arr[i], i, arr);
}
};
map
Standard Definition: arr.map(callback(element, index, array), thisArg)
const myMap = (arr, callback) => {
let res = new Array(arr.length);
for (let i = 0; i <= arr.length - 1; i++) {
res[i] = callback(arr[i], i, arr);
}
return res;
};
filter
Standard Definition: arr.filter(callback(element, index, array), thisArg)
const myFilter = (arr, callback) => {
let res = [];
for (let i = 0; i <= arr.length - 1; i++) {
let flag = callback(arr[i], i, arr);
if (flag) res.push(arr[i]);
}
return res;
};
reduce
Standard Definition: arr.reduce(callback(accumulator, currentValue, index, array), initialValue)
const myReduce = (arr, callback, default_value) => {
let acc, startIndex;
if (default_value != undefined) {
acc = default_value;
startIndex = 0;
} else {
acc = arr[0];
startIndex = 1;
}
for (let i = startIndex; i <= arr.length - 1; i++) {
acc = callback(acc, arr[i], i, arr);
}
return acc;
};