Javascript代码错误(初学者级别)

时间:2015-01-01 13:23:33

标签: javascript

我的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")
    };
  }
};

2 个答案:

答案 0 :(得分:1)

首先,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作为正确的引用。

答案 1 :(得分:1)

函数中的循环并没有按照你的想法进行。

使用for(var firstName in friends)并不意味着您从firstName中的每个对象获得friends属性。您将获得friends中每个对象的密钥,该密钥将放在名为firstName的变量中。

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

此外,没有找到任何东西所采取的行动(记录"不冷静")为时过早。当你在循环中这样做时,你会得到每个人中的一个,直到你找到匹配。确定在循环之后没有找到任何内容,即当已经检查了对象中的所有项目时。

该函数的一个更有用的版本是:

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
}