- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
虽然这个问题的答案here由于递归方面,这是最好的答案,
function sumDigits(number) {
var remainder = number % 10;
var sum = remainder;
if(number >= 10) {
var rest = Math.floor(number / 10);
sum += sumDigits(rest);
}
return sum;
}
还有另一个答案似乎更容易理解。但是,答案中有一些部分我不明白。
function sumDigits(number) {
var sum = 0;
var numbers = number.toString().split(""); //turn the number to string and split the number in several digits
while(numbers.length > 0) {
sum += parseInt(numbers[0], 10); // covert string to number and force the number to be decimal and add the next number
numbers.splice(0, 1); //remove the first digit, in other words, removing "0" from sum, i think?
sumDigits(numbers.join('')); //join the array element into a string
}
return sum;
}
var sum = sumDigits(175);
$('#result').html(sum);
这是我能够理解的内容:
var numbers = number.toString().split("");
将数字转换为字符串并将字符串拆分为子字符串数组。也就是说,如果数字是175,则会将其转换为“175”,并拆分为1、7、5。接下来,
while(numbers.length > 0) {
这确保数字是正数并且可以相加。然而,当我删除这一行并在 JS Bin 中使用负数运行它时,它返回一个错误。因此,不知何故,仅对正数求和很重要。接下来,
sum += parseInt(numbers[0], 10);
这个(parseInt)将字符串或在我们的例子中的子字符串转换回数字并将每个数字添加到其自身。但是我不明白数字后面括号中的“0”,除非它指的是数组中的第一个数字= [1, 7, 5]?不过,我可以看到当我从这一行删除 [0] 时,它会返回一个错误。另外,使用“sum + =”,它应该像这样相加:0 + 1 + 7 + 5。因此总和是13。接下来,
numbers.splice(0, 1);
这是我不明白的部分。我知道 .splice 可以添加或删除项目。比如(0,1)的第一部分,也就是“0”,找到数组的位置,换句话说,“0”找到数组中“1”之前的第一个位置 = [1, 7 ,5]。最后一部分“1”指定要删除的项目数量。换句话说,它要求从数组中删除“1”,导致现在数组变为 [7, 5]。但是,我认为根本不需要,因为不需要从号码中删除任何数字。另外,我不明白评论说当总和应该是 13 时,这一行会从总和中删除“0”?接下来,
sumDigits(numbers.join(''));
这应该将数组元素连接成一个字符串。换句话说,它应该将 array = [1, 7, 5] 连接成“1, 7, 5”。不过,我不明白为什么当这一行 (sum += parseInt(numbers[0])) 将字符串转换回数字并将数字相加时需要这两行(.splice 和 .join)。然而,当我删除这两行时,该功能不起作用......
请帮助我了解它是如何工作的以及哪个先执行等等...
最佳答案
哇,这个 react 很聪明!我会尝试解释一下:假设我们有字符串“3432”
第一次运行该函数时,我们将拆分它:
numbers = ['3','4','3','2']
然后在这个循环中,我们将完成该过程中最微妙的部分,让我们看看:
while(numbers.length > 0) { //actually the condition here is number array has to have at least 1 element, we'll see why
sum += parseInt(numbers[0], 10); // covert string to number and force the number to be decimal and add the next number
//so sum = 0+3
numbers.splice(0, 1); //remove the first digit, in other words, removing "0" from sum, i think?
//then here you're right, we remove the first digit so that
number = ['4','3','2']
sumDigits(numbers.join('')); //join the array element into a string
//and here we call recursively sumDigits passing "432" in arguments
/* so next time sum = 3+4, number = ['3','2'] and then
we will call sumDigits again with "32" as arguments
and then sum = 7+3, number = ['2'], and then
we will call sumDigits again with "2" as arguments
and then sum = 10+2 and number = [] and then we will call sumDigits again passing it "" and at that time the while loop break */
}
关于javascript - 理解另一个添加数字数字的 Javascript 片段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41859865/
我创建了一个用户可以添加测试的字段。这一切运行顺利我只希望当用户点击(添加另一个测试)然后上一个(添加另一个测试)删除并且这个显示在新字段中。 所有运行良好的唯一问题是点击(添加另一个字段)之前添加另
String[] option = {"Adlawan", "Angeles", "Arreza", "Benenoso", "Bermas", "Brebant
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我正在努力将 jQuery 滚动功能添加到 nav-tab (Bootstrap 3)。我希望用户能够选择他们想要的选项卡,并在选项卡内容中有一个可以平滑滚动到 anchor 的链接。这是我的代码,可
我正在尝试在用户登录后再添加 2 个 ui 选项卡。首先,我尝试做一个之后。 $('#slideshow').tabs('remove', '4'); $("#slideshow ul li:last
我有一个包含选择元素的表单,我想通过选择添加和删除其中一些元素。这是html代码(这里也有jsfiddle http://jsfiddle.net/txhajy2w/):
正在写这个: view.backgroundColor = UIColor.white.withAlphaComponent(0.9) 等同于: view.backgroundColor = UICo
好的,如果其中有任何信息,我想将这些列添加到一起。所以说我有 账户 1 2 3 . 有 4 个帐户空间,但只有 3 个帐户。我如何创建 java 脚本来添加它。 最佳答案 Live Example H
我想知道是否有一种有效的预制算法来确定一组数字的和/差是否可以等于不同的数字。示例: 5、8、10、2,使用 + 或 - 等于 9。5 - 8 = -3 + 10 = 7 + 2 = 9 如果有一个预
我似乎有一个卡住的 git repo。它卡在所有基本的添加、提交命令上,git push 返回所有内容为最新的。 从其他帖子我已经完成了 git gc 和 git fsck/ 我认为基本的调试步骤是
我的 Oracle SQL 查询如下- Q1- select hca.account_number, hca.attribute3, SUM(rcl.extended_amou
我正在阅读 http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingG
我正在尝试添加一个“加载更多”按钮并限制下面的结果,这样投资组合页面中就不会同时加载 1000 个内容,如下所示:http://typesetdesign.com/portfolio/ 我对 PHP
我遇到这个问题,我添加了 8 个文本框,它工作正常,但是当我添加更多文本框(如 16 个文本框)时,它不会添加最后一个文本框。有人遇到过这个问题吗?提前致谢。 Live Link: JAVASCRIP
add/remove clone first row default not delete 添加/删除克隆第一行默认不删除&并获取正确的SrNo(例如:添加3行并在看到问题后删除SrNo.2)
我编码this ,但删除按钮不起作用。我在控制台中没有任何错误.. var counter = 0; var dataList = document.getElementById('materi
我有一个类似数组的对象: [1:数组[10]、2:数组[2]、3:数组[2]、4:数组[2]、5:数组[3]、6:数组[1]] 我正在尝试删除前两个元素,执行一些操作,然后将它们再次插入到同一位置。
使用的 Delphi 版本:2007 你好, 我有一个 Tecord 数组 TInfo = Record Name : String; Price : Integer; end; var Info
我使用了基本的 gridster 代码,然后我声明了通过按钮添加和删除小部件的函数它工作正常但是当我将调整大小功能添加到上面的代码中时,它都不起作用(我的意思是调整大小,添加和删除小部件) 我的js代
title 323 323 323 title 323 323 323 title 323 323 323 JS $(document).keydown(function(e){
我是一名优秀的程序员,十分优秀!