<分区>
我正在寻找与 Rails 的 Object.blank 等效的跨浏览器兼容的 Javascript? (及其对应对象 Object.present?),它为空对象、空数组、空字符串以及 null 和未定义值返回 true。有没有人见过这样的东西?我可以自己写,但我知道有一些 IE 陷阱,我想其他人可能已经解决了这个问题。
<分区>
我正在寻找与 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 - 通过文本描述设置选择控件的选定值