SORU
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ş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jonathan D.

    Jonathan D.

    3 Kasım 2006
  • Matt Harding

    Matt Harding

    23 Mayıs 2006
  • Megan Parken

    Megan Parken

    19 Temmuz 2009