Como dice el título, tengo que construir una función de reducción a la que se le pasa una matriz, una devolución de llamada y un acumulador. Los requisitos para la función reduce son:
Estoy luchando con el punto #5. No tengo idea de cómo abordar la lógica para ello. Esto es lo que tengo hasta ahora:
function reduce(collection, callback, accumulator) { if (Array.isArray(collection)) { if (accumulator === undefined) { accumulator = collection[0]; const [el1, ...rest] = collection; collection = [...rest]; } let result = accumulator; for (let element of collection) { result = callback(result, element); } return result; } else { for (const [key, value] of Object.entries(collection)) { callback(); } } }No he incluido el código para el n.° 5, así que cuando ejecuto mi función de reducción en las pruebas que verifican si se cumplieron todos los requisitos, obtengo lo siguiente:
Y esta es la prueba específica para el #5 que debería pasar, pero no lo hace:
it('should pass in items from left to right through iterator', () => { const orderedResult = []; _.reduce([1, 2, 3, 4], (memo, item) => { orderedResult.push(item); return memo; }, 10); expect(orderedResult).toEqual([1, 2, 3, 4]); });No entiendo lo que está probando. ¿Está probando si el acumulador es una matriz vacía o un objeto vacío? Completamente confundido. Por favor, cualquier pista (o recurso) que me pueda dar para ayudarme con esto, sin divulgar la respuesta, sería muy apreciada.