求给定字符串中可变数量数字的总和

  • 编写一个函数 add,它接受一个带有求和任务的字符串,并将其结果作为数字返回。应添加有限数量的自然数。求和任务是“1+19+...+281”形式的字符串。

  • 示例:add('7+12+100')应返回 119。

我写的代码如下:

function add (string) {

   let partsArray = string.split("+");

   let added = parseInt(partsArray[0]);

      

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

      added = added + parseInt(partsArray[i]);

   }


   return added;

}

它返回 NaN。有什么想法如何解决这个问题吗?


扬帆大鱼
浏览 132回答 4
4回答

拉风的咖菲猫

您超出了阵列范围。另外,当您开始从索引 0 开始查看数组时,您应该将添加的值初始化为 0。注意,我添加了一些 console.logs 来让您了解如何调试此类内容。function add (string) {&nbsp; &nbsp;let partsArray = string.split("+");&nbsp; &nbsp;console.log("parts", partsArray);&nbsp; &nbsp;let added = 0;&nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;for (let i=0; i<partsArray.length; i++) {&nbsp; &nbsp; &nbsp; console.log("i",parseInt(partsArray[i]));&nbsp; &nbsp; &nbsp; added += parseInt(partsArray[i]);&nbsp; &nbsp;}&nbsp; &nbsp;return added;}如果添加<=后面并使用 console.logs 运行代码,您将在控制台中看到以下内容。请注意,<=您有 4 个索引,而不是预期的 3 个。这是因为大小为 3,但数组是从零开始索引的。当您使用时,<您会得到预期的答案。

繁花如伊

您还可以使用reduce方法:function add(string) {&nbsp; return string.split('+').reduce((accumulator, currentValue) => accumulator +&nbsp;&nbsp; &nbsp; parseInt(currentValue, 10),0)}

侃侃无极

如果您仍然想从第一个索引开始..您可以像下面这样做function add (string) {&nbsp; &nbsp;let partsArray = string.split("+");&nbsp; &nbsp;let added = parseInt(partsArray[0]);&nbsp; &nbsp;&nbsp; &nbsp;for (let i=1; i<partsArray.length; i++) {&nbsp; &nbsp; &nbsp; added += parseInt(partsArray[i]);&nbsp; &nbsp;}&nbsp; &nbsp;return added;}

手掌心

function add(given)&nbsp;&nbsp; {&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; let data=given.split('+');&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; let nums=data.map(function(num){&nbsp; &nbsp; &nbsp; &nbsp; return parseInt(num)&nbsp; &nbsp; })&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; let sum=0&nbsp; &nbsp; for(let i=0;i<nums.length;i++)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; sum=sum+nums[i];&nbsp; &nbsp; }&nbsp; &nbsp; console.log( sum)&nbsp; &nbsp;&nbsp;}add('7+12+100')
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript