Array.prototype.forEach = undefined Array.prototype.map = undefined // /*/ // ⚡ export const tests = [] const t = f => tests.push(f) export const setup = () => { const arr = [1, 2, 3, 4, 5, Math.random(), 7, 10, -10, 20, -95] Object.getPrototypeOf([]).proto = ' [avoid for..in] ' return { arr } } t(({ eq, ctx }) => { // callback is call with the item value const result = [] const returned = forEach(ctx.arr, value => result.push(value)) return eq([returned, result], [undefined, ctx.arr]) }) t(({ eq, ctx }) => { // callback second parameter is the index const result = [] const returned = forEach(ctx.arr, (_, index) => result.push(index)) return eq([returned, result], [undefined, [...ctx.arr.keys()]]) }) t(({ eq, ctx }) => { // callback third parameter is the array const result = [] const returned = forEach(ctx.arr, (_, __, arr) => result.push(arr)) return eq( [returned, result], [undefined, Array(ctx.arr.length).fill(ctx.arr)], ) }) Object.freeze(tests)