我需要从数组中的特定索引相互添加项目。function findEvenIndex(arr) { let leftsum = 0; let rightsum = 0; arr.forEach((el, ind) => { arr.reduce((acc, currv, i) => i > ind + 1 ? acc + currv : 0) //acc = 1 or undefined leftsum += arr[ind + 1]; rightsum += arr[ind - 1] })}我希望累加器等于 ind+1。我该怎么做?
1 回答
幕布斯7119047
TA贡献1794条经验 获得超8个赞
如何在 Array.prototype.reduce() 中预定义累加器?
只需将第二个参数提供给reduce:
arr.reduce ((acc, currv, i) => i > ind+1 ? acc+currv : 0, ind + 1)
// -------------------------------------------------------^^^^^^^
但是reduce如果您不使用返回值,则使用没有意义。这个reduce电话实际上是一个空操作。您没有使用结果,并且回调中没有副作用。
我问这个函数是做什么的,你在评论中回答:
我需要取一个数组并找到一个索引 N,其中 N 左边的整数之和等于 N 右边的整数之和。
要做到这一点,我会从尽可能靠近中间的地方开始,然后慢慢地走到边缘。显然您不希望我发布解决方案,但我会选择中点索引,从该索引计算每个方向的总和,然后只要总和不匹配,请尝试向左移动一个位置(减去从左边的总和到新索引处的值并将其添加到右边)并检查。然后尝试向右移动一个位置(从右边的总和中减去新索引处的值并将其添加到左边)并检查。继续前进,直到遇到边缘。
添加回答
举报
0/150
提交
取消