SORU
31 Ocak 2013, PERŞEMBE


Nasıl bir değişken olmadığını kontrol etmektir Javascript bir tamsayı?

Nasıl bir değişken Javscript ve onaylamak için bir uyarı atma bir tamsayı ise kontrol edebilirim ? Bu işe yaramazsa ?

<html>
<head>

<script type="text/javascript">

 var data = 22;

 alert(NaN(data));

</script>
</head>

</html>

CEVAP
10 ŞUBAT 2013, Pazar


Duruma göre değişir, aynı zamanda potansiyel olarak tamsayılar dizeleri atmak ister misin?

Bunu yapmak olacak:

function isInt(value) {
  return !isNaN(value) && 
         parseInt(Number(value)) == value && 
         !isNaN(parseInt(value, 10));
}

Bit düzey işlemleri ile

Basit ayrıştırma ve kontrol edin

function isInt(value) {
  var x = parseFloat(value);
  return !isNaN(value) && (x | 0) === x;
}

Kısa devre ve ayrıştırma işlemi kaydetme:

function isInt(value) {
  if (isNaN(value)) {
    return false;
  }
  var x = parseFloat(value);
  return (x | 0) === x;
}

Ya da belki her ikisini birden vurdu

function isInt(value) {
  return !isNaN(value) && (function(x) { return (x | 0) === x; })(parseFloat(value))
}

Testler:

isInt(42)        // true
isInt("42")      // true
isInt(4e2)       // true
isInt("4e2")     // true
isInt(" 1 ")     // true
isInt("")        // false
isInt("  ")      // false
isInt(42.1)      // false
isInt("1a")      // false
isInt("4e2a")    // false
isInt(null)      // false
isInt(undefined) // false
isInt(NaN)       // false

Burada keman: http://jsfiddle.net/opfyrqwp/28/

Burada yolpo: http://www.yolpo.com/embed.html?gist=a3c46f837ea7bbb708ae&autoplay=2

Performans

Test kısa devre çözüm en iyi performansı (ops/sn) olduğu görülmektedir.

// Short-circuiting, and saving a parse operation
function isInt(value) {
  var x;
  if (isNaN(value)) {
    return false;
  }
  x = parseFloat(value);
  return (x | 0) === x;
}

İşte jsPerf: http://jsperf.com/tfm-is-integer

Fantezi kısa devre kısa, kalın kafalı bir form

function isInt(value) {
  var x;
  return isNaN(value) ? !1 : (x = parseFloat(value), (0 | x) === x);
}

Tabii ki, minifier bu dikkat izin öneririm.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Break

    Break

    10 Aralık 2005
  • CasinoRoyaleMovie's channel

    CasinoRoyale

    1 AĞUSTOS 2006
  • InsideBlackBerry

    InsideBlackB

    14 Aralık 2009