测试子字符串是否为数字,并且是否大于Javascript中的另一个数字

时间:2018-06-28 19:05:00

标签: javascript

我有一个json文件,其中有一个字符串作为pubDate。 pubDate可以是2010或2010 Mar或2010/1/1或Blank或Not available。我拥有的是

var res = pubDate.substr(0, 4);
var i = parseInt(res, 10);
if (!isNaN(i)) {                    
    if (i > 2010) {
        //do work
    }
}

这行得通,但是我希望有一些更简洁的代码,我可能可以用一两行代码来完成。这可能吗?

4 个答案:

答案 0 :(得分:2)

1)如果iNaN,则i > 2010为假,因此不需要进行isNaN检查。

2)ParseInt忽略后缀字符,因此您不必进行以下操作:

const year = parseInt(pubDate);
if(year > 2010) {
  //...
 }

答案 1 :(得分:0)

听起来这是一个非常混乱的情况,没有折叠其中的一些行,我认为您没有太多选择。通过折叠一些行,我的意思是:

var i = parseInt((pubDate.substr(0, 4), 10);
if (!isNan(i) && i > 2010) {
    // do work
}

但这是假设您以后不需要使用“ res”,看起来好像您不需要。

答案 2 :(得分:0)

也许是两行代码。也许不是更干净的代码。

var i = (!isNaN(parseInt(pubDate.substr(0, 4))))?parseInt(pubDate.substr(0, 4)):0;
if( i > 2010 ){
    //do work
}

答案 3 :(得分:0)

如果您不希望查找小数,可以删除10。有关此的更多信息,请访问https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt

var i = parseInt(pubDate.substr(0, 4));
if (!isNaN(i) && i > 2010) { 
     //do work
}