使用jquery的变量循环值

问题描述:

昨天我问了哪些问题已被正确回答。现在我想花更多的时间来理解昨天回答的功能。在该函数循环中,在'num'变量中增加了值'7'。我想知道它如何在'num'中增加值。使用jquery的变量循环值

var Arr = [ 'h78em', 'w145px', 'w13px' ] 

function stringToNum(str){ 
    num = 0; 
    for (i = 0; i < str.length; i++) 
    if (str[i] >= '0' && str[i] <= '9') 
     num = num * 10 + parseInt(str[i]); 
    return num; 
} 

alert(stringToNum(Arr[0])); 
​ 

这里是fiddle

+0

MDAS规则适用你通过10首先乘以NUM添加解析值之前,因此0 * 10 + 78 = 78 – ianace

+0

如果删除* 10 + parseInt函数(STR [1]);然后警报号它会返回7,我想知道它是如何7传递给num变量 – Carlos

在给定的代码,当函数被调用时,如果条件检查在传递的值每串当变量是数字时,执行以下代码

if (str[i] >= '0' && str[i] <= '9') 
     num = num * 10 + parseInt(str[i]); 

所以在给定的字符串中,第一个数字是7。由于num值是初始为零num的值将是,

num=(0 *10) + 7 

所以num=7在数的第一次出现。上一个数的第二出现时ie 8

num的值将是,

num=(7*10)+8 

因此值为78

+0

非常感谢主席先生。你有非常好的解释方式。 – Carlos

下面这个函数会简单得多。

function stringToNum(str) { 
    return +str.replace(/\D/g, ''); 
} 

更新:

与您的代码:

init : num = 0 
met 7: num = 0 * 10 + 7 -> num = 7 
met 8: num = 7 * 10 + 8 -> num = 78 
+0

我不想要新的答案相同,我只是想了解这个 – Carlos

+0

@amit什么是你不明白的部分? – xdazz

+0

@amit使用正则表达式清除非数字要比遍历字符串解析每个数字(+1 @xdazz)好得多。它更清洁,一目了然更容易理解,并且应该表现更好(当然,随着字符串增长更长) – n*s

1次迭代:num = 0; // h

2迭代:num = 0 * 10 + 7; // 7

3次迭代:num = 7 * 10 + 8; // 8

4迭代:num = 78; // e

5迭代:num = 78; // m