【发布时间】:2017-10-05 19:18:18
【问题描述】:
我有以下对象数组。每个对象都包含朋友的姓名、年龄和性别,如下所示:
var friends = [{name: "Dan",
age: 34,
gender: "male"},
{name: "Chris",
age: 30,
gender: "male"},
{name: "Laura",
age: 32,
gender: "female"}];
我必须编写一个函数,它可以带三个朋友中的任何一个,并将他们的年龄加一岁。我写了这个:
function hasBirthday(name){
friends.forEach(function(person){
if(name === person.name){
person.age += 1;
}
}); return person.age;
}
假设我想将 Laura 的年龄从 32 岁更改为 33 岁。我会这样调用该函数:
hasBirthday("Laura");
如果我将函数分配给一个变量,然后 console.log 它,我希望输出为 33。但是,我总是收到以下错误消息:
ReferenceError: person is not defined.
谁能解释我为什么不断收到此错误消息?我完全被难住了。谢谢。
【问题讨论】:
-
为什么要在人名中添加数字?你不想
person.age吗? -
好吧,我的意思是,
person实际上在您的退货声明中是未定义的。 (它在 forEach 之外) -
如果您的目标是返回新时代,则必须将该值存储在 for each 之外的变量中,然后在 for each 之后返回该变量的值。或者使用 for 循环并在里面返回。
-
谢谢凯文。你已经解决了这个问题。非常感谢。
标签: javascript arrays object