0

配列から数値を取得する方法を知りたいです。NaNエラーを出してみました

<script type="text/javascript">

$(function(){

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

alert(parseInt(Arr[0]))


})
</script>
4

7 に答える 7

3

で試してみてください

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

フィドルの例:http://jsfiddle.net/t6yCV/

開始+は次のようparseInt()に機能し、取得した数値を使用して数学演算を実行する必要がある場合は、実際に必要です。

typeof Arr[0].replace(/\D/g,'')  // String
typeof +Arr[0].replace(/\D/g,'') // Number
于 2012-08-30T08:06:01.930 に答える
3

試す:

['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]
于 2012-08-30T08:21:44.433 に答える
1

文字列から数値を作成する関数を作成できます。

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/

于 2012-08-30T08:06:08.880 に答える
1

これを試して:

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

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

}

alert(stringToNum(Arr[0]));

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

于 2012-08-30T11:23:43.570 に答える
0

どうですか

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

jsfiddle

于 2012-08-30T08:06:22.617 に答える
0

さらに別の迅速で汚い解決策:

alert(Arr[0].match("\\d+"));
于 2012-08-30T08:09:39.713 に答える
0

試してみてください、この正規表現の方が優れています

parseInt('h343px'.replace(/^[a-zA-Z]+/,''),10)
于 2012-08-30T09:02:53.470 に答える