Zek*_*eke 4 javascript ruby-on-rails
我正在寻找一个与Rails的Object.blank相当的跨浏览器兼容的Javascript?(及其对应的Object.present?),它为空对象,空数组,空字符串以及null和undefined值返回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;
}
Run Code Online (Sandbox Code Playgroud)
所以...
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
Run Code Online (Sandbox Code Playgroud)
编辑:添加一个catch,以便true和false返回为非空白.如果您想将false视为空白,则更改它.
编辑2:最后一次改变!阻止blank(0)返回true.但是允许NaN被认为是空白的.
| 归档时间: |
|
| 查看次数: |
611 次 |
| 最近记录: |