如何在Javascript中替换Object属性?

时间:2017-08-21 15:12:24

标签: javascript object

我一直坚持这个问题,经过各种考试后,我决定是时候寻求帮助了。

以下是问题: 创建一个名为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);

6 个答案:

答案 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;
}