簡體   English   中英

如何替換Javascript中的Object屬性?

[英]How do you replace an Object property in Javascript?

我已經在這個問題上停留了一段時間,經過各種嘗試,我決定是時候尋求幫助了。

問題是:創建一個名為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); 

遵守要求

創建一個名為changeEmail的函數,該函數接受一個用戶對象和一個newEmail字符串

您的changeEmail函數簽名應如下所示

function changeEmail(userObject, emailString) {

}

用newEmail字符串替換用戶當前的電子郵件地址(分配給email屬性)

意味着您的函數體可能類似於:

userObject.email = emailString;

最后

然后返回更新的用戶對象

將會

return userObject;

什么是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")

我認為您過於復雜了。 您只需要更新屬性:

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";

您應該更改屬性而不是參數本身:

 param1.email = param1.email.replace("johndoe", "newjohndoe");

讓我們再看看您的問題。

創建一個名為changeEmail的函數,該函數接受一個用戶對象和一個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"); 

您將返回示例中的所有錯誤內容。 看看這個,

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM