拆分、比较并输出数组中最合适的值

Splitting, comparing and outputting the most appropriate value in the array

我有一个函数可以将一个大数组拆分成目标块。

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;
}

我需要修改函数,让它首先对每个输出数组求和,然后将结果与目标进行比较,并输出接近目标的数组的总和。

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
=> 183

请告知如何正确设计逻辑以及最适合此任务的方法。

您可以对每个想要的 k 元素求和,然后比较最后和实际总和的绝对增量。

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