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

这句还是不太理解,求大神指教

 sum += parseInt(arr[i].substr(arr[i].indexOf(":")+1));

正在回答

3 回答

 sum += parseInt(arr[i].substr(arr[i].indexOf(":")+1)); 

先一步步分解 arr[i] 比如一个数组 {‘123’,“ds:41”“sdd:121”},a[0]就是 123以此类推;arr[i].indexOf(":") 查找该数组元素a[i]中含有 : 所在的位置 比如 a[1] ="ds:41" 5个字符  indexOf(":")  得出在第三位为 :,但是它和数组一样 序号从0开始 所以a[1].indexOf(":")  的结果是 1 ,a[2].indexOf(":")  的结果是 3.

a[i].indexOf(":")+1 就是上条语句得出的结果 +1;

substr()函数有两种 substr(一个参数),substr(参数1,参数2),

string a="hello";a.substr(0) 从第一个字符开始输出 结果:hello; a.substr(1)  结果:ello;

a.substr(0,1) 就是从截取第几位到第几位输出,比如 a.substr(0,1)  结果:h ;a.substr(0,2)  结果:he;

a.substr(1,2)  结果:e;

arr[i].substr(arr[i].indexOf(":")+1) 现在就可以把arr[i].indexOf(":")+1看成一个数字 arr[i].substr[数字];意思就是从:后面开始输出  比如上面说的数组 元素 a[1]=“ds:41”; 

arr[i].substr(arr[i].indexOf(":")+1)  输出就是 41,pasInt 就是强制转换类型为整型 比如a[1]=“ds:4.1”,a[1]=“ds:41.6”;   

sum += parseInt(4.1);  ==>sum += 4;

sum += parseInt(41.6); ==>sum += 41;

0 回复 有任何疑惑可以回复我~
#1

紫菜中毒

刚刚回答的第四行 文字有错误 a[1].indexOf(":") 的结果是 2 不是 1
2016-06-14 回复 有任何疑惑可以回复我~
#2

豆浆君szz 提问者 回复 紫菜中毒

恩,一开始也觉得1不对,之后意识到了。
2016-06-17 回复 有任何疑惑可以回复我~

arr[i].indexOf(":")+1    :     “:”在字符串(如"小天:76")中出现的位置,+1即代表下一个字符(数组的下标值)

substr(数组的下标值) :     提取从指定下标值开始的字符,这里即获取“小天:76”字符串中的“76”

parseInt :将“76”字符串类型转成整型,用于加法运算

sum += XXXXX : 即 sum = sum + XXXXX

0 回复 有任何疑惑可以回复我~
#1

猩大大

如果不+1,提取的就是:76,是不是这个意思啊
2016-06-14 回复 有任何疑惑可以回复我~
#2

Capricorncd 回复 猩大大

是滴,你可以自己写写代码,运行试试 ...
2016-06-15 回复 有任何疑惑可以回复我~
#3

豆浆君szz 提问者

感觉还是你的答案比较简单易懂些,谢谢了!
2016-06-17 回复 有任何疑惑可以回复我~
#4

Capricorncd 回复 豆浆君szz 提问者

客气客气
2016-06-18 回复 有任何疑惑可以回复我~
查看1条回复

indexOf(":")找到":"第一次出现的位置,arr[i].indexOf(":")+1,从arr[i]中找到第一个“:”,+1是因为不能出现-1,substr(arr[i].indexOf(":")+1)得到找出的“:”在arr[i]哪个位置,也就是下标,arr[i].substr(arr[i].indexOf(":")+1) 从arr[i]中,通过substr得出的下标位置,从下标数开始截取字符,含下标数的那个字符。

如果arr[i]中是1234,substr得到2,则arr[i].substr(arr[i].indexOf(":")+1) 得到的,便是34。

不知道我理解的有没有错误,希望没有误导你。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

这句还是不太理解,求大神指教

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信