2016-02-10 107 views
1

我有一個像下面的對象:如何檢查對象的屬性名稱的長度

var car = 
{ 
    "bmw": 
    { 
     "price": $100000 
    } 
}; 

我檢查,如果房地產價格在對象車內存在:

var checkPropertyExistsInObject = function(obj, property) { 
     var args = Array.prototype.slice.call(arguments, 1); 
     for (var i = 0; i < args.length; i++) { 
      if (!obj || !obj.hasOwnProperty(args[i])) { 
       return false; 
      } 
      obj = obj[args[i]]; 
     } 
     return true; 
    } 

if(checkPropertyExistsInObject(car,'bmw','price')){ 
      return true ; 
else 
       return false; 

我能夠檢查物業價格是否存在於對象車中,但我想檢查物業價格的長度(而不是價格的價值長度)。我無法確定如何去做。

任何幫助將不勝感激!

+0

你是什麼意思?如果你知道屬性路徑,你也知道屬性路徑的長度......'['bmw','price']。join('')。length' – plalx

+0

Wtf是那個int之前做的美元符號嗎?雖然我不會感到驚訝,如果它是新的ES6功能,我認爲情況並非如此。 –

+0

所以你想檢查一個你知道的密鑰的長度?像''價格「.length'? – pawel

回答

2

您可以使用Object.keys遍歷對象的鑰匙,就像這樣:

var o = {bmw: {price: 1000}}, 
keys = Object.keys(o), 
length = -1 
for (var i = 0; i< keys.length; i++){ 
    var key = keys[i]; 
    if (key == 'bmw'){ 
    length = key.length; // access the length here; 
    break; 
    } 
} 
+0

但是如果你想檢查字符串'「bmw」'的長度,你可以檢查''bmw「.length',對不對?與提供的字符串相同的密鑰不能具有除字符串以外的任何其他長度。 – pawel

+0

@pawel沒錯,上面的代碼很傻。這只是關於如何使用Object.keys方法的一個例子 – Antoine

1

Object.keys提供對象的所有鍵作爲數組。檢查鑰匙的長度。

if(checkPropertyExistsInObject(car,'bmw','price')){ 
// Length of the key 
return Object.keys(car['bmw'])[0].length 

} else{ 
return false; 
}