只是在我正在做的练习中寻找对几件事情的虚拟解释,我并不完全理解它。
我在这里创建了一个包含两个条目的对象:
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);
}
};我有些理解-我设法让它工作,但我不认为我完全理解它为什么工作。它是一个查看friends对象的函数,对吗?然后是一个function(friends)循环,循环遍历我的对象中的条目,并将密钥记录到控制台。上面显示了比尔和史蒂夫。
我不明白的是,(var key in friends)如何知道如何遍历和存储对象的两个元素?它只是该函数的一个保持变量,因为我定义了function(friends),所以它只是查找对象的父元素?
其次,此函数:
var search = function(name) {
for (var key in friends) {
console.log...
}
};我正在尝试将对象中两个父元素的子元素记录到控制台。比尔和史蒂夫的firstName,lastName,number,address。
我不确定将这些记录到控制台的格式,我尝试过console.log(friends[bill]);,但我认为这不是正确的语法。
任何指导都是很棒的--我想我已经很接近了。
发布于 2014-01-17 20:14:23
如果对象是JSON,那么循环将位于键上,而不是将数组作为数组索引,请尝试以下操作
console.log(friends[key]);发布于 2014-01-17 20:18:37
JavaScript中的对象是键-值对的集合。您的friends对象是一个具有2个键-值对的集合。集合中的两个键是bill和steve。这两个值中的每个值都是一个具有4个键值对的对象: firstName、->、Bill等。
第一个函数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);https://stackoverflow.com/questions/21185406
复制相似问题