首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于搜索对象的搜索功能的说明和指导

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

Stack Overflow用户
提问于 2014-01-17 19:56:59
回答 2查看 33关注 0票数 0

只是在我正在做的练习中寻找对几件事情的虚拟解释,我并不完全理解它。

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

代码语言:javascript
复制
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']
    }
};

我完全理解这一点,我只是把它作为前言,这样你就能理解我的搜索功能。

我有两个功能,我希望有人能用虚假的术语解释一下。第一个:

代码语言:javascript
复制
var list = function(friends) {

for (var key in friends) {

    console.log(key);
}
};

我有些理解-我设法让它工作,但我不认为我完全理解它为什么工作。它是一个查看friends对象的函数,对吗?然后是一个function(friends)循环,循环遍历我的对象中的条目,并将密钥记录到控制台。上面显示了比尔和史蒂夫。

我不明白的是,(var key in friends)如何知道如何遍历和存储对象的两个元素?它只是该函数的一个保持变量,因为我定义了function(friends),所以它只是查找对象的父元素?

其次,此函数:

代码语言:javascript
复制
var search = function(name) {

    for (var key in friends) {

        console.log...

    }
    };

我正在尝试将对象中两个父元素的子元素记录到控制台。比尔和史蒂夫的firstName,lastName,number,address。

我不确定将这些记录到控制台的格式,我尝试过console.log(friends[bill]);,但我认为这不是正确的语法。

任何指导都是很棒的--我想我已经很接近了。

EN

回答 2

Stack Overflow用户

发布于 2014-01-17 20:14:23

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

代码语言:javascript
复制
console.log(friends[key]);
票数 0
EN

Stack Overflow用户

发布于 2014-01-17 20:18:37

JavaScript中的对象是键-值对的集合。您的friends对象是一个具有2个键-值对的集合。集合中的两个键是billsteve。这两个值中的每个值都是一个具有4个键值对的对象: firstName、->、Bill等。

第一个函数list是一个将任何对象作为参数并记录其所有键的函数。它采用的对象取决于您对其进行调用的对象。该参数被命名为friends,并且与您的变量的名称相同,这纯粹是巧合。

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

代码语言:javascript
复制
for (var name in friends) {
  for (var innerKey in friends[name]) {
    console.log(name, innerKey, friends[name][innerKey]);
  }
}

使用您已经编写的函数list,您可以执行以下操作:

代码语言:javascript
复制
var showNested = function(object) {
  for (var name in object) {
    console.log('Information for ', name);
    list(object[name];
  }
}

// Usage:
showNested(friends);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21185406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档