3
我正在尋找一個與Rails的Object.blank相當的跨瀏覽器兼容的Javascript? (及其對應物Object.present?),它爲空對象,空數組,空字符串以及空值和未定義值返回true。有沒有人看過這樣的事情?我可以自己寫,但我知道有一些IE陷阱,我認爲別人可能已經解決了這個問題。Javascript中的多用途is_blank?
我正在尋找一個與Rails的Object.blank相當的跨瀏覽器兼容的Javascript? (及其對應物Object.present?),它爲空對象,空數組,空字符串以及空值和未定義值返回true。有沒有人看過這樣的事情?我可以自己寫,但我知道有一些IE陷阱,我認爲別人可能已經解決了這個問題。Javascript中的多用途is_blank?
我剛纔一起鞭打。沒有在任何瀏覽器上測試它,只是在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,使真假回來的不是空白。如果你想假的被認爲是空白的,那就改變它。
編輯2:最後的改變!防止空白(0)返回真實。但是讓NaN被認爲是空白的。
空對象在JavaScript中可能會很棘手。我不認爲有類似的東西有任何IE問題。 – Pointy
來自ruby,這對我來說似乎是一個「真正的問題」。此外,該問題還包含所需行爲的完整規範,因此它不是「模棱兩可」或「模糊」。我也許可以看到這個問題被封閉爲「太寬泛」或「不完整」,因爲OP沒有分享他們的研究。 –