5

在 Rails 中,我们可以.present?检查一个字符串是否不是 -nil并且包含除空格或空字符串以外的其他内容:

"".present?       # => false
"     ".present?  # => false
nil.present?      # => false
"hello".present?  # => true

我想要 Javascript 中的类似功能,而不必为它编写函数function string_present?(str) { ... }

这是我可以用开箱即用的 Javascript 还是通过添加到String's 的原型来做的事情?

我这样做了:

String.prototype.present = function()
{
    if(this.length > 0) {
      return this;
    }
    return null;
}

但是,我将如何使这项工作:

var x = null; x.present

var y; y.present
4

3 回答 3

4
String.prototype.present = function() {
    return this && this.trim() !== '';
};

如果值可以null,则不能使用原型的方式来测试,可以使用函数。

function isPresent(string) {
    return typeof string === 'string' && string.trim() !== '';
}
于 2013-07-25T20:50:23.290 回答
0

您可以双重反转变量:

> var a = "";
undefined
> !a
true
> !!a
false
> var a = null;
undefined
> !!a
false
> var a = " ";
> !!a.trim();
false

然后:

if (!!a && !!a.trim()) {
  true
}else{
  false
}
于 2013-11-21T13:56:35.573 回答
0

最好的是 if 语句或第一种方法,即。string_present() 函数。

于 2013-07-25T20:58:28.620 回答