在JS中切片并平均(减少)数组

lov*_*job 0 javascript arrays reduce slice

我有一个数组:

var data = [0,1,2,3,4,5];

我想拼接成[0,1,2][3,4,5],随后通过取平均值所以最终的结果将是:

var dataOptimised = [1,4];

这是我到目前为止发现的:

function chunk (arr, len) {

    var chunks = [];
    var i = 0;
    var n = arr.length;

    while (i < n) {
      chunks.push(arr.slice(i, i += len)); // gives [[0,1,2] [3,4,5]]
    }

    return chunks;

};
Run Code Online (Sandbox Code Playgroud)

如何减少它?

谢谢

Ori*_*ori 5

使用每个块求和Array.reduce()并除以块的length.

var data = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30];

function chunkAverage(arr, len) {
    var chunks = [];
    var i = 0;
    var n = arr.length;
    
    var chunk;

    while (i < n) {
      chunk = arr.slice(i, i += len);
      chunks.push(
        chunk.reduce((s, n) => s + n) / chunk.length
      );
    }

    return chunks;
};

console.log(chunkAverage(data, 3));
Run Code Online (Sandbox Code Playgroud)