javascript - Typescript : kontrollera om en sträng är ett nummer


Jag är ny inom webbutveckling, och i min funktion vill jag kontrollera om ett givet strängvärde är ett nummer. Om strängen inte är ett giltigt nummer vill jag returnera null.

Följande fungerar i alla fall utom när strängen är "0", i vilket fall den returnerar null.

parseInt(columnSortSettings[0]) || null;

Hur förhindrar jag att detta händer. Uppenbarligen betraktar inte parseInt 0 som ett heltal!

Svar #1

Eftersom 0 fungerar som falskt, kan du använda isNaN() i det här fallet

var res = parseInt(columnSortSettings[0], 10);
return isNaN(res) ? null : res;

Svar #2

Det är för att du i princip testar 0 som också är falskt. Du kan göra

var n = columnSortSettings[0];
if(parseInt(n, 10) || n === '0'){
    //...
}

Du kan också testa istället om det är ett nummer

if(typeof(parseInt(n, 10)) === 'number'){
  //...
}

Men var försiktig för

typeof Infinity === 'number';
typeof NaN === 'number';

Relaterade artiklar