Javascript 减少多维数组以获得给定数组的sum/avg/min/max

Javascript 减少多维数组以获得给定数组的sum/avg/min/max,javascript,Javascript,我有一个数组,如下所示: a=[[1,2,3,4],[5,6,7,8]] 我想以这样一种方式减少它,即根据用户输入函数f(array,ops)它应该输出如下结果: result=f(a,“总和”): result=[6,8,10,12] const methods = { sum: (arr) => arr.reduce((total, v) => total + v, 0), avg: (arr) => methods.sum(arr) / a

我有一个数组,如下所示:

a=[[1,2,3,4],[5,6,7,8]]

我想以这样一种方式减少它,即根据用户输入函数
f(array,ops)
它应该输出如下结果:

result=f(a,“总和”):
result=[6,8,10,12]

const methods = {
        sum: (arr) => arr.reduce((total, v) => total + v, 0),
        avg: (arr) => methods.sum(arr) / arr.length,
        max: (arr) => Math.max.apply(null, arr),
        min: (arr) => Math.min.apply(null, arr),
      };
通过上述方式,我计划将其用作:
方法[methodname(array)]

我想调用如下所示的方法:

const value = Array(a.length);
a.forEach((elem,ind) => {
 value[0] = methods["sum"] // for all elem[0]
 value[1] = methods["sum"] // for all elem[1]
});

但是我需要把这个传给多维数组。有人能建议一种方法吗?

您需要将数组转置,并使用其中一个函数进行映射

const
转置=(r,a)=>a.map((v,i)=>[…(r[i]| |[]),v]),
f=(数组,键)=>数组
.reduce(转置,[]))
.map(方法[键]),
方法={
总和:arr=>arr.reduce((总和,v)=>total+v,0),
平均值:arr=>methods.sum(arr)/arr.length,
max:arr=>Math.max(…arr),
min:arr=>Math.min(…arr),
},
a=[[1,2,3,4],[5,6,7,8];
console.log(…f(a,“sum”);//[6, 8,1 0, 12]

控制台日志(…f(a,“avg”)reduce中的累加器函数必须处理内部数组

var a=[[1,2,3],[4,5,6]]
函数和(a){
返回a.reduce((v,电流)=>{
if(!v)返回current.slice();
for(设i=0;ix/a.length)
}
函数最大值(a){
返回a.reduce((v,电流)=>{
if(!v)返回current.slice();
for(设i=0;iv[i])v[i]=当前[i];
返回v;
},未定义);
}
功能最小值(a){
返回a.reduce((v,电流)=>{
if(!v)返回current.slice();
for(设i=0;iconsole.log(min(a))
噢,哇,非常感谢,这就是我想要的!!!