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;i console.log(min(a))
噢,哇,非常感谢,这就是我想要的!!!