Al final obtengo números, ¿cómo convertirlo en una matriz?
Ejemplo:
Entrada: 4, 5, 1, 2, 3, -2
Salida: [(13, 9, 4, 3, 1, -2)];
function sumNumbers(numbersList) { const data = numbersList.forEach((item, index) => { const output = numbersList.reduce( (acc, c, i) => (index !== i ? (acc += c) : c), 0 ); console.log(result); return output; }); return data; } sumNumbers([4, 5, 1, 2, 3, -2]);Considere reemplazar Array.prototype.forEach con Array.prototype.map (ya que queremos que se devuelva el valor)
function sumNumbers(numbersList) { const main = numbersList.map((item, index) => { const result = numbersList.reduce( (acc, c, i) => (index !== i ? (acc += c) : c), 0 ); return result; }); return main; } console.log(sumNumbers([4, 5, 1, 2, 3, -2]))Explicación:
.forEach devuelve indefinido ( docs )
mientras que .map devuelve "Una nueva matriz con cada elemento como resultado de la función de devolución de llamada". ( documentos )
La respuesta dada por @ tibebes-m, otro enfoque (que reduce la complejidad) es iterar la matriz hacia atrás y usar solo una función de reducción (sin mapa)
const sumNumbers = (list) => list .reverse() .reduce((acc, next, index) => { acc.unshift(next + (acc[0] || 0)); return acc; }, []); console.log(sumNumbers([4, 5, 1, 2, 3, -2]));