js数组求i到j的和

使用slice和reduce或for循环可求数组i到j间元素和,前者代码简洁,后者性能更优。例如sumRange([1,2,3,4,5],1,3)返回9。

在JavaScript中,要求数组从索引 ij(包含)之间的元素和,可以通过几种方式实现。下面介绍常用且清晰的方法。

使用 slice 和 reduce

先用 slice(i, j + 1) 截取从 i 到 j 的子数组,然后用 reduce 求和。

function sumRange(arr, i, j) {
  return arr.slice(i, j + 1).reduce((sum, num) => sum + num, 0);
}

如:

const arr = [1, 2, 3, 4, 5];
console.log(sumRange(arr, 1, 3)); // 输出:9 (2 + 3 + 4)

使用 for 循环(性能更好)

如果数组较大,直接用循环避免创建新数组,效率更高。

function sumRange(arr, i, j) {
  let sum = 0;
  for (let k = i; k <= j; k++) {
    sum += arr[k];
  }
  return sum;
}

注意事项

确保索引有效,避免越界:

  • 检查 i 和 j 是否在 0 到 arr.length - 1 范围内
  • 确保 i

基本上就这些,根据场景选择简洁或高效的方式即可。