2017-02-24 71 views
1

比方說,我有一個對象 -如何確定在給定的對象在Javascript中的對象?

var obj = { 
    name : 'John', 
    contact : { 
      address : 'xyz', 
      phone : 555 
    } 
} 

現在,當我遍歷這個對象

for (let key in obj) { 
    console.log(typeof key); 
} 

在這兩種情況下,我得到「串」的類型。 那麼有什麼方法可以將聯繫價值作爲一個對象?

回答

4

key實際上包含 「名」 和 「接觸」 的字符串。

如果要檢測包含在contact屬性值的類型,你需要訪問它是這樣的:

typeof obj[key] 

演示:

var obj = { 
 
    name : 'John', 
 
    contact : { 
 
    address : 'xyz', 
 
    phone : 555 
 
    } 
 
} 
 

 
for (let key in obj) { 
 
    console.log(key + " (key is " + typeof key + ", value is " + typeof obj[key] + "):"); 
 
    console.log(obj[key]); 
 
}

2

你需要用property accessor

console.log(typeof obj[key]); 
//     ^^^^^^^^ 

解決財產的價值,否則,你永遠'string',因爲對象的鍵是字符串。

var obj = { name : 'John', contact : { address : 'xyz', phone : 555 } }; 
 

 
for (let key in obj) { 
 
    console.log(typeof obj[key]); 
 
}

2

你是試圖找到類型的關鍵,而你應該找到類似的價值,如 的typeof OBJ [關鍵]

1

你可以這樣做沒有任何循環,如果您知道屬性的關鍵,你想:

var obj = { 
 
    name: 'John', 
 
    contact: { 
 
    address: 'xyz', 
 
    phone: 555 
 
    } 
 
}; 
 

 
console.log(obj.contact); 
 
console.log(obj["contact"]); 
 
console.log(typeof obj.contact); 
 
console.log(typeof obj["contact"]);

當使用一個循環,"contact"匝變成一個變量。這意味着你像這樣訪問屬性:

for (var key in obj) { 
    console.log(obj[key]); // key === "contact" 
} 

的這個代替:

obj["contact"] 

還應注意obj.keyobj[key]之間的區別:

var obj = { 
 
    key: "this_is_a_key", 
 
    foo: "this_is_a_foo" 
 
}; 
 

 
var key = "foo"; 
 
console.log(obj.key); // returns the "key" property 
 
console.log(obj[key]); // returns the "foo" property because the key variable holds "foo"