Javascript 关于搜索对象的搜索功能的说明和指导

Javascript 关于搜索对象的搜索功能的说明和指导,javascript,Javascript,我只是想对我正在做的一个练习中的一些事情做一个简单的解释,但我并不完全理解 我在这里创建了一个包含两个条目的对象: var friends = { bill: { firstName: "Bill", lastName: "Gates", number: "(206) 555-5555", address: ['One Microsoft Way','Redmond','WA','98052'] }, st

我只是想对我正在做的一个练习中的一些事情做一个简单的解释,但我并不完全理解

我在这里创建了一个包含两个条目的对象:

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对象的函数,对吗?然后使用该部分函数创建一个for循环,该循环遍历我的对象中的条目,并将密钥记录到控制台。其中展示了比尔和史蒂夫

我不明白的是,var key in friends如何循环并存储两个元素中的对象?它是否只是该函数的一个保持变量,并且因为我定义了functionfriends,它只是查找对象的父元素

第二,这一职能:

var search = function(name) {

    for (var key in friends) {

        console.log...

    }
    };
我试图将对象中两个父元素的子元素记录到控制台。比尔和史蒂夫的名字,姓氏,电话号码,地址

我不确定将这些日志记录到控制台的格式,我已经尝试了console.logfriends[bill];但我认为这不是正确的语法


任何指导都会很好-我想我有点接近了。

如果对象是JSON,那么循环将在键上,而不是说数组将是数组索引,请尝试以下操作

console.log(friends[key]);

JavaScript中的对象是键值对的集合。您的friends对象是一个包含2个键值对的集合。收藏中的两把钥匙是比尔和史蒂夫。这两个值中的每一个都是一个具有4个键值对的对象:firstName->Bill,等等

第一个函数list是一个函数,它将任何对象作为参数并记录其所有键。它取什么对象取决于你对它的称呼。参数名为friends并且与变量名相同,这完全是巧合

对于第二个函数,需要嵌套For循环。如果没有函数,您将执行以下操作:

for (var name in friends) {
  for (var innerKey in friends[name]) {
    console.log(name, innerKey, friends[name][innerKey]);
  }
}
var showNested = function(object) {
  for (var name in object) {
    console.log('Information for ', name);
    list(object[name];
  }
}

// Usage:
showNested(friends);
使用您已经编写的函数list,您可以执行以下操作:

for (var name in friends) {
  for (var innerKey in friends[name]) {
    console.log(name, innerKey, friends[name][innerKey]);
  }
}
var showNested = function(object) {
  for (var name in object) {
    console.log('Information for ', name);
    list(object[name];
  }
}

// Usage:
showNested(friends);