如何在 Array.prototype.reduce() 中预定义累加器?

我需要从数组中的特定索引相互添加项目。


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。我该怎么做?


犯罪嫌疑人X
浏览 118回答 1
1回答

幕布斯7119047

如何在 Array.prototype.reduce() 中预定义累加器?只需将第二个参数提供给reduce:arr.reduce ((acc, currv, i) => i > ind+1 ? acc+currv : 0, ind + 1)// -------------------------------------------------------^^^^^^^但是reduce如果您不使用返回值,则使用没有意义。这个reduce电话实际上是一个空操作。您没有使用结果,并且回调中没有副作用。我问这个函数是做什么的,你在评论中回答:我需要取一个数组并找到一个索引 N,其中 N 左边的整数之和等于 N 右边的整数之和。要做到这一点,我会从尽可能靠近中间的地方开始,然后慢慢地走到边缘。显然您不希望我发布解决方案,但我会选择中点索引,从该索引计算每个方向的总和,然后只要总和不匹配,请尝试向左移动一个位置(减去从左边的总和到新索引处的值并将其添加到右边)并检查。然后尝试向右移动一个位置(从右边的总和中减去新索引处的值并将其添加到左边)并检查。继续前进,直到遇到边缘。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript