Javascript 减少单个数组的求和切片数

Javascript 减少单个数组的求和切片数,javascript,arrays,reduce,splice,Javascript,Arrays,Reduce,Splice,我有一个值数组 设a=[1,2,3,4,5,6] 我想对特定的片求和,例如a[0]+a[1]给出一个新数组: [1+2,3+4,5+6] 有没有推荐使用reduce()或其他方法执行此操作?例如某种步进/范围参数?您可以使用reduce执行此操作,但它不是适合此工作的工具。下面是键入索引并传递数组的方法: let数组=[1,2,3,4,5,6]; 让结果=数组。减少((a,v,i)=>{ 如果(i%2==1){ //这是一个奇数,所以用 //上一个条目并推送到结果数组 a、 push(v+阵列

我有一个值数组

设a=[1,2,3,4,5,6]

我想对特定的片求和,例如
a[0]+a[1]
给出一个新数组:

[1+2,3+4,5+6]

有没有推荐使用reduce()或其他方法执行此操作?例如某种步进/范围参数?

您可以使用
reduce
执行此操作,但它不是适合此工作的工具。下面是键入索引并传递数组的方法:

let数组=[1,2,3,4,5,6];
让结果=数组。减少((a,v,i)=>{
如果(i%2==1){
//这是一个奇数,所以用
//上一个条目并推送到结果数组
a、 push(v+阵列[i-1]);
}
返回a;
}, []);

控制台日志(结果)因为我希望@T.J.Crowder是正确的:)

const a=[1,2,3,4,5,6];
//循环数组的所有值
常数res=a.reduce((tmp,x,xi)=>{
/使用Ma.Land和席(我们正在处理的价值指数)
//将返回的数组中的值存储在正确的位置
tmp[Math.floor(xi/2)]=(tmp[Math.floor(xi/2)]| | 0)+x;
返回tmp;
}, []);
控制台日志(res)另一种方法,对一个值使用并仅使用奇数索引

var数组=[1,2,3,4,5,6],
result=array.flatMap((v,i,{[i+1]:w=0})=>i%2?[]:v+w);

控制台日志(结果)
使用[
Array.prototype.reduce
]的简单快速解决方案可以如下所示:

const数组=[1,2,3,4,5,6];
常数范围=2;
const result=array.reduce((全部,项,i)=>{
常数idx=数学楼层(i/范围);
如果(!all[idx])all[idx]=0;
所有[idx]+=项;
全部归还;
},[]);

控制台日志(结果)
使用
reduce
可以得到答案,但是
reduce
并不是这项工作的合适工具。为什么要使用
reduce
要求?我想这不是一个要求,我在考虑使用np.add.reduceat方法的numpty,该方法提供间隔/切片,但JSAh需要这个,明白了吗@JayB数组中的元素数是否总是偶数?如果不超过元件数量,则需要输出什么,即
[1,2,3]
?但它不是作业的正确工具。。。为什么不呢?@TheMaster-我的观点(和)是,与备选方案相比,
reduce
的大多数用法过于复杂,特别是像这样的方法:1)传递的“累加器”永远不会改变,2)你没有在每个循环上工作
reduce
对于求和和和计数之类的东西非常有用,但是对于大多数其他用途来说过于复杂了(同样,IMHO)。@TJC感谢您的解释。