只是在我正在做的练习中寻找一些虚拟的解释,我不完全理解它。
我在这里创建了一个带有两个条目的对象:
var friends = {
bill: {
firstName: "Bill",
lastName: "Gates",
number: "(206) 555-5555",
address: ['One Microsoft Way','Redmond','WA','98052']
},
steve: {
firstName: "Steve",
lastName: "Jobs",
number: "(292) 676- 3434",
address: ['One Microsoft way',' Redmond', 'WA', '98052']
}
};
我完全理解这一点,我只是把它作为序言,以便你理解我的搜索功能。
我有两个功能,我希望有人会用虚拟术语来解释。第一个:
var list = function(friends) {
for (var key in friends) {
console.log(key);
}
};
我有点理解 - 我设法让它工作,但我不认为我完全理解为什么它有效。这是一个正在查看朋友对象的功能吗?使用该部分function(friends)
然后循环遍历我的对象中的条目并将密钥记录到控制台。这显示比尔和史蒂夫。
我不明白的是(var key in friends)
如何知道循环并存储两个元素的对象?它是否只是该函数的保持变量,因为我定义function(friends)
它只是查找对象的父元素?
其次这个功能:
var search = function(name) {
for (var key in friends) {
console.log...
}
};
我试图在控制台中记录对象中两个父元素的子元素。所以bill和steve的firstName,lastName,number,address。
我不确定将这些格式记录到控制台的格式,我曾尝试console.log(friends[bill]);
,但我认为这不是正确的语法。
任何指导都会很棒 - 我认为我很接近。
答案 0 :(得分:0)
如果对象是JSON,则循环将通过键,而不是说数组将是数组索引,请尝试以下
console.log(friends[key]);
答案 1 :(得分:0)
JavaScript中的对象是键值对的集合。您的friends
对象是一个包含2个键值对的集合。集合中的2个键是bill
和steve
。 2个值中的每一个都是具有4个键值对的对象:firstName - >比尔等。
第一个函数list
是一个函数,它将任何对象作为参数并记录其所有键。它需要什么对象取决于你所称的它。参数名为friends
并且与变量名称相同的事实纯属巧合。
对于第二个函数,您需要嵌套for循环。没有功能你会做这样的事情:
for (var name in friends) {
for (var innerKey in friends[name]) {
console.log(name, innerKey, friends[name][innerKey]);
}
}
使用您已编写的功能list
,您可以执行以下操作:
var showNested = function(object) {
for (var name in object) {
console.log('Information for ', name);
list(object[name];
}
}
// Usage:
showNested(friends);