例如,如果我有以下两个对象
var person = {};
person.name = 'Austin';
person.personality = 'Awsome';
var job = {};
job.title = 'space cowboy';
job.pay = 10,000;
person.job = job;
我希望以编程方式列出for循环中的每个键和值par我有以下
for(var key in person){
console.log(key)
console.log(person.key)
}
如果密钥在没有硬编码if person.key == job
的情况下到达作业,我将如何在此循环中检测到。另外,我如何列出这个for循环中的所有作业键?
答案 0 :(得分:1)
function trace(ob){
for (var item in ob){
if (typeof ob[item] == 'object') trace(ob[item]);
console.log("key", item);
console.log("value", ob[item]);
}
}
答案 1 :(得分:1)
显然你可以对格式化做很多事情,但这是一个递归遍历对象的简单例子。也许它会帮助告诉你你需要做什么:
function iterate(object) {
for(var key in object) {
if (object[key] instanceof Object) {
iterate(object[key]);
}
else {
console.log(key + ": " + object[key]);
}
}
}
以下是一个示例,如果有帮助:http://jsbin.com/AmUkIPO/2/
答案 2 :(得分:0)
你可以改为:
我将如何列出所有工作键
var keys = Object.keys(person.job); // get the all the properties keys as array.
keys.map(function(prop, index){
//prop is a propery
// index: the index position in the array
// prop === "property named"
});
如何获取值并进行比较:
for (prop in person) {
if (person[prop] === someValue){
..
}
}
* someValue:表示您想要搜索其他内容而不仅仅是获取值类型的值。
所有在一起:
for (prop in person) {
if (person[prop] === someValue){
var keys = Object.keys(person[prop]); // get the all the properties keys as array.
}
}