如何用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
相关产品推荐
相关产品推荐

