0

昨天我问了已正确回答的问题。现在我想花更多的时间来理解昨天回答的那个函数。在该函数循环中,在“num”变量中添加值“7”。我想知道它如何在“num”中增加价值。

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]));
​

这是小提琴

4

3 回答 3

2

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

   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

于 2012-08-31T06:24:28.160 回答
1

下面的函数会简单得多。

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
于 2012-08-31T06:17:17.117 回答
1

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

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

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

4次迭代:num = 78; // e

5次迭代:num = 78; // m

于 2012-08-31T06:26:34.700 回答