Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 数组上的ParseInt()方法_Javascript_Jquery - Fatal编程技术网

Javascript 数组上的ParseInt()方法

Javascript 数组上的ParseInt()方法,javascript,jquery,Javascript,Jquery,我想知道如何从数组中获取数字。我试过它给我一个错误 <script type="text/javascript"> $(function(){ var Arr = [ 'h78em', 'w145px', 'w13px' ] alert(parseInt(Arr[0])) }) </script> $(函数(){ var Arr=['h78em','w145px','w13px'] 警报(parseInt(Arr[0])) }) 尝试使用 +Arr[0].r

我想知道如何从数组中获取数字。我试过它给我一个错误

<script type="text/javascript">

$(function(){

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

alert(parseInt(Arr[0]))


})
</script>

$(函数(){
var Arr=['h78em','w145px','w13px']
警报(parseInt(Arr[0]))
})
尝试使用

+Arr[0].replace(/\D/g, '');
小提琴示例:

启动
+
就像运行
parseInt()
一样,如果您需要使用获得的数字执行一些数学运算,那么启动是必要的:事实上

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

您可以构建一个函数,用于根据字符串生成数字:

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;
}
函数stringToNum(str){
num=0;
对于(i=0;i='0'&&str[i]呢

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

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

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

或者使用更精细的
字符串
原型扩展:

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]

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

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

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

function stringToNum(str){
  return str.match(/\d+/g);

}

alert(stringToNum(Arr[0]));

这是因为
h78em
不是一个数字。如果你只需要字符串中的所有数字,你可以使用正则表达式:
parseInt(Arr[0]。替换(/\D/g),“”)
。你关心像
abc123def456
这样更复杂的情况吗?注意区分大小写。此外,这会产生类似“a52eb2”的东西在522中。不确定这是否正确,你可能会得到一个不同的数字。哇!你能告诉我它背后的逻辑吗?你从num=0开始,然后迭代字符串中的字符。如果你找到一个数字,你将数字乘以10,然后在末尾加上新的数字。如何处理
stringToNum('123abc345def'))
?这取决于:您希望将值视为单独的数字还是单个数字?后一种情况是您的方法所涵盖的,但对于第一种情况,您的方法是不够的。很好:只是为了简化:
[^\d]==>\D
-不幸的是IE8不支持
map
@Fabrizio:yep,已调整。您可以找到
数组.prototype.map
shim@Try
parseInt({h343px})。替换(/^[a-zA-Z]+/,''),10)
var Arr = [ 'h78em', 'w145px', 'w13px' ]

function stringToNum(str){
  return str.match(/\d+/g);

}

alert(stringToNum(Arr[0]));