14 ŞUBAT 2011, PAZARTESİ
Nesne boş?
Eğer bir nesnenin boş olup olmadığını kontrol etmek için en hızlı yolu nedir?
Bu daha hızlı ve daha iyi bir yoldur:
function count_obj(obj){
var i = 0;
for(var key in obj){
i;
}
return i;
}
CEVAP
14 ŞUBAT 2011, PAZARTESİ
O varsayıyorumboşyani, onun kendi özellikleri vardır".
// Speed up calls to hasOwnProperty
var hasOwnProperty = Object.prototype.hasOwnProperty;
function isEmpty(obj) {
// null and undefined are "empty"
if (obj == null) return true;
// Assume if it has a length property with a non-zero value
// that that property is correct.
if (obj.length > 0) return false;
if (obj.length === 0) return true;
// Otherwise, does it have any properties of its own?
// Note that this doesn't handle
// toString and valueOf enumeration bugs in IE < 9
for (var key in obj) {
if (hasOwnProperty.call(obj, key)) return false;
}
return true;
}
Örnekler:
isEmpty(""), // true
isEmpty([]), // true
isEmpty({}), // true
isEmpty({length: 0, custom_property: []}), // true
isEmpty("Hello"), // false
isEmpty([1,2,3]), // false
isEmpty({test: 1}), // false
isEmpty({length: 3, custom_property: [1,2,3]}) // false
Eğer sadece ECMAScript5 browsers, işlemek gerekiyorsa hasOwnProperty
döngü yerine Object.getOwnPropertyNames
kullanabilirsiniz:
if (Object.getOwnPropertyNames(obj).length > 0) return false;
Bu nesnenin sadece olmayan sayısız özellikleri varsa bile isEmpty
hala size doğru sonuçlar verecektir sağlayacaktır.
Bunu Paylaş:
Javascript Dize Yazın ve Dize Nesne ar...
Neden ve'boş ve tanımsız arasında...
İtfa edilmiş, sürekli R listesine bir ...
Javascript Nesne.Tüm tarayıcılar için ...
Java yansıma programı iki nesne derin ...