我正在做 JS Hero 网站上的练习:
编写一个函数 add ,它接受一个带有求和任务的字符串,并将其结果作为数字返回。应添加有限数量的自然数。求和任务是 '1+19+...+281' 形式的字符串。
示例:
应返回 119.add('7+12+100')
我写的代码如下:
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。任何想法如何解决这个问题?
你越界了。此外,当您开始从索引 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 但数组是从零开始索引的。当您使用 <
时,您会得到预期的答案。
你也可以使用 reduce 方法:
function add(string) {
return string.split('+').reduce((accumulator, currentValue) => accumulator +
parseInt(currentValue, 10),0)
}
如果你仍然想从第一个索引开始..你可以像下面那样做
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;
}
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;
}
最简单的答案是:
function add(str){
return eval(str)
}
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')