You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JavaScript计算数组偶数索引元素的总和?

问题分析与解决方案

你的代码输出0的核心错误是错误使用了indexOf方法,且判断逻辑完全偏离需求:

  • 你不需要用x.indexOf[i](这本身是语法错误,indexOf是数组方法需调用indexOf(),但此处根本不需要该方法),你要判断的是当前遍历的索引是否为偶数,而非元素的索引位置。
  • for...in遍历数组得到的索引是字符串类型,虽直接用%2能生效,但更稳妥的是转为数字,或换用更适配数组的遍历方式。

修正原逻辑的代码

function sum_even_index(x) {
  let sum = 0
  for (let i in x) {
    // 将字符串索引转为数字,判断是否为偶数
    if (Number(i) % 2 === 0) {
      sum += x[i];
    }
  }
  return sum;
}

console.log(sum_even_index([1, 2, 3, 4])) // 输出4

更推荐的写法(直接遍历偶数索引)

for...in并不适合遍历数组,推荐用普通for循环直接跳过奇数索引,效率更高:

function sum_even_index(x) {
  let sum = 0;
  // 从索引0开始,每次步长2,只遍历偶数索引
  for (let i = 0; i < x.length; i += 2) {
    sum += x[i];
  }
  return sum;
}

console.log(sum_even_index([1, 2, 3, 4])) // 输出4

简洁写法(使用数组reduce方法)

如果偏好函数式风格,可使用reduce实现:

function sum_even_index(x) {
  return x.reduce((total, current, index) => {
    // 索引为偶数时累加当前元素
    return index % 2 === 0 ? total + current : total;
  }, 0);
}

console.log(sum_even_index([1, 2, 3, 4])) // 输出4

内容的提问来源于stack exchange,提问作者Manuel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 23:35:19