[英]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.