为了账号安全,请及时绑定邮箱和手机立即绑定

定义带有 for 循环和 if 语句的函数以返回数组和总和

定义带有 for 循环和 if 语句的函数以返回数组和总和

慕村225694 2023-08-10 14:30:56
我正在阅读 Eloquent JavaScipt 第三版来学习 JavaScript。我做了书中的一个练习,并且确信它是正确的。但显然我错了,因为它给我的结果与书中的解决方案不同。目标是编写一个范围函数,它接受两个参数(start 和 end),并返回一个包含从 start 到(并包括)end 的所有数字的数组。编写一个 sum 函数,它接受一个数字数组并返回这些数字的总和这是我的代码。function range(a, b, c = a < b ? 1 : -1){  let numbers = [];    if (c > 0) {    for (let i = a; i <= b; i += c) numbers.push(i);  } else {    for (let i = a; i >= a; i += c) numbers.push(i);  }  return numbers;}function sum(array){  let result = 0;  for (let i = 0; i <= array.length; i++){    result += array[i];  }  return result;}下面是书上的解决方案function range(start, end, step = start < end ? 1 : -1) {  let array = [];  if (step > 0) {    for (let i = start; i <= end; i += step) array.push(i);  } else {    for (let i = start; i >= end; i += step) array.push(i);  }  return array;}function sum(array) {  let total = 0;  for (let value of array) {    total += value;  }  return total;}所以,如果我们运行console.log(range(1, 10));console.log(range(5, 2, -1));console.log(sum(range(1, 10)));我的结果是[1, 2, 3, 4, 5, 6, 7, 8, 9, 10][5]NaN预期结果是[1, 2, 3, 4, 5, 6, 7, 8, 9, 10][5, 4, 3, 2]55对我来说,代码看起来是一样的。我在这里缺少什么?
查看完整描述

1 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

你的for循环sum()是错误的。它应该是:

for (let i = 0; i < array.length; i++){

请注意我如何使用i < array.length,而不是i <= array.length.

我们希望循环在遍历完每个元素后停止。使用意味着当存在且不存在<=时循环仍然运行。i10array[10]


查看完整回答
反对 回复 2023-08-10
  • 1 回答
  • 0 关注
  • 88 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信