Java脚本代码错误(初级)

Java script code error (beginner level)

我的 JavaScript 代码哪里出错了?

var friends = {
  bill: {
    firstName: 'Bill',
    lastName: 'Gates',
    number: 23123,
    address: ['One Microsoft Way', 'Redmond', 'WA', '98052']
  },
  steve: {
    firstName: 'Steve',
    lastName: 'Trueman',
    number: 123123,
    address: ['One Microsoft Way', 'Redmond', 'WA', '98052']
  }
};
/*
var list = function(friends) {

  for (var firstName in friends) {
    console.log(firstName)
      // Use object[key] to access
      // the corresponding value
  }
}
*/
var search = function() {
  for (var firstName in friends) {
    if (firstName === 'Steve') {
      console.log(friends[steve]);
      return friends[steve];
    } else {
      console.log("not cool")
    };
  }
};

首先,search() 函数需要在某处执行...

search();

这是我要更改为...

var search = function () {
    for (var f in friends) {
        if (friends[f].firstName === 'Steve') {
            console.log(friends[f]);
            return friends[f];
        } else {
            console.log("not cool")
        };
    }
};

...注意 f in frients,这就像数组的索引,允许(稍后)friends[f]friends[f].firstname 作为适当的引用。

函数中的循环与您想象的不一样。

使用 for(var firstName in friends) 并不意味着您从 friends 中的每个对象获得 firstName 属性。您将获得 friends 中每个对象的键,该键被放入名为 firstName.

的变量中

根据您当前的数据,变量将在第一次迭代中获得值 "bill",然后在第二次迭代中获得值 "steve"

此外,为未找到任何内容(记录 "not cool")而采取的操作为时过早。当您在循环中执行此操作时,您将为每个人获得其中一个,直到找到匹配项。确定什么都没有找到将在循环之后完成,即当对象中的所有项目都已检查时。

该函数更有用的版本是:

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

用法:

var f = search('Steve');
if (f != null) {
  // found steve
} else {
  // not found
}