这句还是不太理解,求大神指教
sum += parseInt(arr[i].substr(arr[i].indexOf(":")+1));
sum += parseInt(arr[i].substr(arr[i].indexOf(":")+1));
2016-06-13
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;
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。
不知道我理解的有没有错误,希望没有误导你。
举报