在 JavaScript 中查找数组的中值索引

问题

我们需要编写一个 JavaScript 函数,该函数接受一个数组 arr,该数组表示一维空间中不同小行星的位置。

对于每颗小行星,绝对值代表它的大小,符号代表它的方向(正表示右,负表示左)。每颗小行星以相同的速度移动。

我们的功能应该是找出所有碰撞后小行星的状态。如果两颗小行星相遇,较小的一颗就会爆炸。如果两者大小相同,则两者都会爆炸。两颗同向运动的小行星永远不会相遇。

例如,如果函数的输入是 -

输入

const arr = [1, 7, 3, 6, 5, 6];

输出

const output = 3;

输出说明

索引 3 左侧的数字总和 (nums[3] = 6) 等于索引 3 右侧的数字总和。

此外,3 是发生这种情况的第一个索引。

示例

以下是代码 -

const arr = [1, 7, 3, 6, 5, 6];
const medianIndex = (arr = []) => {
   let sum = arr.reduce((acc, num) => acc + num, 0)
   let currentSum = 0
   for (let i = 0; i < arr.length; i++) {
      currentSum += (arr[i - 1] || 0)
      sum -= arr[i]
      if (currentSum === sum) {
         return i
      }
   }
   return -1
}
console.log(medianIndex(arr));
输出结果
3