javascript - 在此示例中,为什么在循环数组时需要数组名称?

标签 javascript

所以,我理解这个例子中的所有内容,但有一件事。 在搜索功能中为什么需要写

if (friends[key].firstName === name)

而不是

if (key.firstName === name)

我相信当对象被一个接一个地抓取时,写“friends[key].firstName”似乎是多余的

循环不是已经只有一个对象并且只是将其与名称参数进行比较吗?


var friends = {};
friends.bill =  {
    firstName: "Bill",
    lastName: "Gates",
    number: "(206) 555-5555",
    address: ['One Microsoft Way','Redmond','WA','98052']
};
friends.steve = {
    firstName: "Steve",
    lastName: "Ballmer",
    number: "(206) 444-5555",
    address: ['One Microsoft Way','Redmond','WA','98052']
};

var list = function(friends) {
    for (var key in friends) {
        console.log(key);
    }
};

var search = function(name) {
    for (var key in friends) {
        if (friends[key].firstName === name) {
            console.log(friends[key]);
            return friends[key];
        }
    }
 };

search("Steve");

最佳答案

因为使用 for...in 循环,第一个变量(本例中为 key)表示属性的名称,而不是值本身。对于来自使用 for...each 循环的语言的人来说,这是一个非常常见的误解(通常在语法上非常相似,但服务于完全不同的目的,因为它们用于迭代集合,与 for...in 循环不同,它是用于迭代对象的属性),其中变量直接表示当前迭代中拉取的值。

关于javascript - 在此示例中,为什么在循环数组时需要数组名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23586749/

相关文章:

javascript - iPad 上的 UI Bootstrap 复选框和 radio 速度较慢

javascript - 如何在输入类型 ="input"中添加微调按钮

javascript - 如何将 HighChart xAxis 上的时间从军用时间更改为标准时间?

javascript - Html 表单输入已发送,然后卡在 php 页面中

javascript - 从当前 url javascript 获取字符串斜杠后的值

javascript - Angular 2 D3 拖动功能范围问题

javascript - 使用 jquery 的顺序淡入淡出

javascript - 如何调用一个函数另一个函数作为参数传递为字符串

javascript - 查询 scrollTo 在 Firefox 中不起作用

javascript - React/MUI Popover 使用 anchorPosition 定位不正确