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

问题描述 投票:0回答:6

我正在做 JS Hero 网站上的练习

编写一个函数 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。任何想法如何解决这个问题?

javascript
6个回答
4
投票

你越界了。此外,当您开始从索引 0 开始查看数组时,您应该将 added 初始化为 0。注意我添加了一些 console.logs 让您了解如何调试这样的东西。

function add (string) {
   let partsArray = string.split("+");
   console.log("parts", partsArray);
   let added = 0;
      
   for (let i=0; i<partsArray.length; i++) {
      console.log("i",parseInt(partsArray[i]));
      added += parseInt(partsArray[i]);
   }

   return added;
}

如果您添加

<=
并使用 console.logs 运行代码,您将在控制台中看到以下内容。注意
<=
你有 4 个索引而不是预期的 3 个。这是因为大小是 3 但数组是从零开始索引的。当您使用
<
时,您会得到预期的答案。


1
投票

你也可以使用 reduce 方法:

function add(string) {
  return string.split('+').reduce((accumulator, currentValue) => accumulator + 
    parseInt(currentValue, 10),0)
}

1
投票

如果你仍然想从第一个索引开始..你可以像下面那样做

function add (string) {
   let partsArray = string.split("+");
   let added = parseInt(partsArray[0]);   
   for (let i=1; i<partsArray.length; i++) {
      added += parseInt(partsArray[i]);
   }
   return added;
}

0
投票
function add(input) {
    let myinput = input.split("+") //split your value
    let sum = 0;

    for (let i = 0; i < myinput.length; i++) {
        sum = sum + +myinput[i]; //use + for identify the number value
    }
    return sum;
}

0
投票

最简单的答案是:

function add(str){
    return eval(str)
}

0
投票
function add(given) 
  {
    
    let data=given.split('+');
    
    let nums=data.map(function(num){
        return parseInt(num)
    })
    
    let sum=0
    for(let i=0;i<nums.length;i++)
    {
        sum=sum+nums[i];
    }
    console.log( sum)
    
}
add('7+12+100')
© www.soinside.com 2019 - 2024. All rights reserved.