Native Array Methods
by LyndseyB
Babel + JSX
const forEach = (array, fn) => {
for(let i = 0, len = array.length; i < len; i++) {
fn(array[i], i, array);
}
};
const filter = (array, fn) => {
const filtered = [];
for(let i = 0, len = array.length; i < len; i++) {
if(fn(array[i], i, array)) {
filtered.push(array[i]);
}
}
return filtered;
};
const find = (array, fn) => {
for(let i = 0, len = array.length; i < len; i++) {
if(fn(array[i], i, array)) {
return array[i];
}
}
};
const findIndex = (array, fn) => {
for(let i = 0, len = array.length; i < len; i++) {
if(fn(array[i], i, array)) {
return i;
}
}
};
const every = (array, fn) => {
for(let i = 0, len = array.length; i < len; i++) {
if(!fn(array[i], i, array)) {
return false;
}
}
return true;
};
const reduce = (array, fn, accumulator) => {
for(let i = 0, len = array.length; i < len; i++) {
accumulator = fn(accumulator, array[i], array);
fn(accumulator, array[i], array);
}
return accumulator;
};
const map = (array, fn) => {
const mapped = [];
for(let i = 0, len = array.length; i < len; i++) {
mapped.push(fn(array[i], i, array));
}
return mapped;
};
const array = [1, 2, 3, 4, 5];
const divisibleByTwo = filter(array, (item, index) => {
return item % 2 === 0;
});
const findGreaterThan3 = find(array, item => item > 3);
const findGreaterThan3Index = findIndex(array, item => item > 3);
const singleDigits = every(array, item => item < 10);
const allDivisibleByTwo = every(array, item => item % 2 === 0);
const sumReduce = reduce(array, (acc, cur) => acc + cur, 1);
const doubleAll = map(array, item => item * 2);
console.log(doubleAll);