我一直坚持这个问题,经过各种考试后,我决定是时候寻求帮助了。
以下是问题: 创建一个名为changeEmail的函数,该函数接收用户对象和newEmail字符串。 用newEmail字符串替换用户当前的电子邮件地址(分配给email属性),然后返回更新的用户对象。
这是我的代码
var user = {
name: "John Doe",
email: "johndoe@gmail.com"
};
function changeEmail(param1) {
param1 = param1.email.replace("johndoe", "newjohndoe");
user.email = param1;
return user;
}
changeEmail(user);
console.log(user);
答案 0 :(得分:3)
遵守请求
创建一个名为changeEmail的函数,它接受一个用户对象和一个 newEmail字符串
你的changeEmail函数签名应该是
function changeEmail(userObject, emailString) {
}
使用newEmail字符串
替换用户当前的电子邮件地址(分配给email属性)
意味着你的函数体可能看起来像:
userObject.email = emailString;
最后
然后返回更新的用户对象
将是
return userObject;
答案 1 :(得分:2)
什么是param1?你只需要对象属性进行替换。
var user = {name: "John Doe", email: "johndoe@gmail.com"};
// If you want to replace a part of email by another thing:
user.email = user.email.replace("johndoe", "newjohndoe")
// If you just want to setup a new email:
user.email = "newjohndoe@gmail.com
或使用功能:
function replaceObjectParam(obj, key, old_value, new_value) {
obj[key] = obj[key].replace(old_value, new_value)
return obj
}
var user = {name: "John Doe", email: "johndoe@gmail.com"};
user = replaceObjectParam(user, 'email, "johndoe", "newjohndoe")
答案 2 :(得分:2)
我认为你过度复杂了。您只需要更新属性:
function changeEmail(user,email){
user.email = email;
return user;
}
所以你可以这样做:
changeEmail({email:"before"},"after");
如果你想用一些ESnext来惹恼你的老师:
const changeEmail = (user,email)=>({...user,email});
//(note this does shallow copy)
const user = changeEmail({email:"before"},"after");
实际上,我认为这项任务并不实用。为什么不简单:
user.email = "after";
答案 3 :(得分:0)
您应该更改属性而不是参数本身:
param1.email = param1.email.replace("johndoe", "newjohndoe");
答案 4 :(得分:0)
让我们再看看你的问题。
创建一个名为changeEmail的函数,该函数接收用户对象和a newEmail字符串。替换用户当前的电子邮件地址(分配给 使用newEmail字符串的email属性),然后返回更新的 用户对象。
在查看代码时,首先要注意的是,function
只接受一个参数,而不是两个参数。这就是为什么它不能满足你的问题。另一个注意事项是,您通常希望以更具描述性的方式为params
命名,因此当您在function
内使用它们时,这是有意义的。
您的更新代码可能如下所示。
var user = {name: "John Doe", email: "johndoe@gmail.com"};
function changeEmail (userObj, newEmail) {
userObj.email = newEmail
return userObj;
}
changeEmail(user, "newemail@gmail.com");

答案 5 :(得分:-1)
您正在返回示例中的所有错误内容。 看看这个,
var oldUser = new User("John", "foo@barr.com"); // Assuming you have a User object
function changeEmail(user, newEmail) {
var newUser = new User();
newUser.name = user.name;
newUser.email = newEmail;
return newUser;
}
var updatedUser = changeEmail(oldUser, "barr@foo.com");
您首先要使用旧用户,然后您可以更改其电子邮件。
如果要更改其电子邮件,请传入用户对象和新电子邮件。新用户现在位于updatedUser
用户对象可以像这样简单,
var User = function(name, email) {
this.name = name;
this.email = email;
}