Tengo una función que divide una matriz grande en fragmentos de destino.
function chunkArray(ls, k, t) { let outputArr = []; for (let i = 0; i < ls.length; i += k) { outputArr.push(ls.slice(i, k + i)); } return outputArr; }Necesito modificar la función para que primero sume cada matriz de salida y luego compare el resultado con el objetivo y genere la suma de la matriz que está cerca del objetivo.
const ls = [51, 56, 58, 59, 61, 63, 68, 70, 72]; chunkArray(ls, 3, 182); => arr1 = [51, 56, 58]; => 165 => arr2 = [59, 61, 63]; => 183 => arr3 = [68, 70, 72]; => 210 => 183Por favor, indique cómo diseñar correctamente la lógica y qué métodos son los más adecuados para esta tarea.
Puede tomar una suma para cada k elementos deseados y comparar el delta absoluto de la última y la suma real.
function chunkArray(ls, k, t) { let result = 0, i = 0; while (i < ls.length) { let sub = 0; for (let j = 0; j < k; j++) sub += ls[i + j] || 0; if (Math.abs(result - t) > Math.abs(sub - t)) result = sub; i += k; } return result; } const ls = [51, 56, 58, 59, 61, 63, 68, 70, 72]; console.log(chunkArray(ls, 3, 182)); // 183