数组上的ParseInt()方法



我想知道如何从数组中获取数字。我已经尝试过它给我NaN错误

<script type="text/javascript">
$(function(){
var Arr = [ 'h78em', 'w145px', 'w13px' ]
alert(parseInt(Arr[0]))

})
</script>

尝试

+Arr[0].replace(/D/g, '');

小提琴示例:http://jsfiddle.net/t6yCV/

启动+就像启动parseInt()一样,如果你需要对获得的数字进行一些数学运算,这是必要的:事实上是

typeof Arr[0].replace(/D/g,'')  // String
typeof +Arr[0].replace(/D/g,'') // Number

尝试:

['h78em', 'w145px', 'w13px']
 .map(function(a){return ~~(a.replace(/D/g,''));});
 //=> [78, 145, 13]

另请参见

或者使用更精细的String原型扩展:

String.prototype.intsFromString = function(combine){
 var nums = this.match(/d{1,}/g);
 return !nums ? 0 
         : nums.length>1 ? combine ? ~~nums.join('') 
           : nums.map(function(a){return ~~a;}) 
         : ~~nums[0];
};
// usage
'abc23'.intsFromString();          //=> 23
'3abc121cde'.intsFromString();     //=> [3,121]
'3abc121cde'.intsFromString(true); //=> 3121
'abcde'.intsFromString();          //=> 0
// and ofcourse
['h78em', 'w145px', 'w13px'].map(function(a){return a.intsFromString();});
//=> [78, 145, 13]

您可以构建一个函数,从字符串中构建数字:

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;
}

jsFiddle:http://jsfiddle.net/8WwHh/

试试这个:

var Arr = [ 'h78em', 'w145px', 'w13px' ]
function stringToNum(str){
  return str.match(/d+/g);
}
alert(stringToNum(Arr[0]));

http://jsfiddle.net/8WwHh/1/

另一个快速而肮脏的解决方案:

alert(Arr[0].match("\d+"));

怎么样

alert(parseInt(Arr[0].replace(/[a-z_A-Z]/g,"")));

jsfiddle

试试看,这个正则表达式是更好的

parseInt('h343px'.replace(/^[a-zA-Z]+/,''),10)

最新更新