配列から数値を取得する方法を知りたいです。NaNエラーを出してみました
<script type="text/javascript">
$(function(){
var Arr = [ 'h78em', 'w145px', 'w13px' ]
alert(parseInt(Arr[0]))
})
</script>
配列から数値を取得する方法を知りたいです。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]));
さらに別の迅速で汚い解決策:
alert(Arr[0].match("\\d+"));
試してみてください、この正規表現の方が優れています
parseInt('h343px'.replace(/^[a-zA-Z]+/,''),10)