javascript - Javascript 中的通用 is_blank?

标签 javascript ruby-on-rails

<分区>

我正在寻找与 Rails 的 Object.blank 等效的跨浏览器兼容的 Javascript? (及其对应对象 Object.present?),它为空对象、空数组、空字符串以及 null 和未定义值返回 true。有没有人见过这样的东西?我可以自己写,但我知道有一些 IE 陷阱,我想其他人可能已经解决了这个问题。

最佳答案

我只是把它搅在一起。没有在任何浏览器上测试它,只是在 Node.js 中运行它。但我认为它应该有效。

function blank(obj) { 
    var cache;

    if((cache = typeof obj) !== 'boolean' && (cache !== 'number' || isNaN(obj)) && !obj)
        return true;
    if(cache == 'string' && obj.replace(/\s/g, '').length === 0)
        return true;
    if(cache == 'object') {
        if((cache = toString.call(obj)) == '[object Array]' && obj.length === 0)
            return true;
        if(cache == '[object Object]') {
            for(cache in obj) {
                return false;
            }
            return true;
        }
    }

    return false;
}

所以...

blank([])
// true
blank({})
// true
blank({ x: 123 })
// false
blank('')
// true
blank(' ')
// true
blank(' asdf')
// false
blank()
// true
var x; blank(x)
// true
var x = 12; blank(x)
// false
blank(true)
// false
blank(false)
// false
blank(0)
// false
blank(NaN)
// true

编辑:添加了一个 catch,以便 true 和 false 返回时不为空。如果您希望 false 被视为空白,请更改它。

编辑 2:最后更改!防止 blank(0) 返回 true。但允许 NaN 被认为是空白。

关于javascript - Javascript 中的通用 is_blank?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7880704/

相关文章:

ruby-on-rails - Rails4 : ActiveRecord. ..CollectionProxy: NoMethodError

ruby-on-rails - Rails Admin 如何显示下拉字段

javascript - 如果我像这样实现 setInterval ,我是否必须运行clearInterval

javascript - 使函数仅对其原型(prototype)可用

ruby-on-rails - 如果数据为空、nil 或空白,则返回字符串?

ruby-on-rails - Ruby 我怎样才能在给定日期之后获得星期一的日期

java - 有没有成熟的基于Cookie的HttpSession实现?

javascript - jQuery - 通过文本描述设置选择控件的选定值

javascript - 当我在 JavaScript 上单击 next 和 previous 时如何设置数组的顺序?

javascript - .load() 在检索内容时是否保留内联 JavaScript?