試圖解決這個問題:這個函式將獲取一個代表學生資料的物件,一個需要更改的鍵,以及它的英文翻譯。
到目前為止,我設法用這段代碼解決了這個問題:
function translateKey(student, keyToChange, translation) {
student[translation] = student[keyToChange];
delete student[keyToChange];
return student;
}
const student = {
firstName: "Napoleon",
surname: "Bonaparte",
ilsSontMorts: true,
};
console.log(translateKey(student, "ilsSontMorts", "isDead"));
但第二個請求是將這些更改回傳到一個新物件中,并成功轉換密鑰例如:
{
firstName: "Napoleon",
surname: "Bonaparte",
isDead: true,'
}
我嘗試了不同的“解決方案”,例如
return new Object(student)
但它不起作用..我怎樣才能將我的結果作為新物件回傳?
謝謝您的支持。
uj5u.com熱心網友回復:
您可以參考以下解決方案
function translateKey(student, keyToChange, translation) {
const newObj = {...student}
newObj[translation] = newObj[keyToChange];
delete newObj[keyToChange];
return newObj;
}
const student = {
firstName: "Napoleon",
surname: "Bonaparte",
ilsSontMorts: true,
};
console.log('new Object',translateKey(student, "ilsSontMorts", "isDead"));
console.log('oldObject',student)
uj5u.com熱心網友回復:
您的函式translateKey()修改傳入物件。為了防止這種情況,您應該創建重復的物件,無論是 by{...student}還是 byObject.assign()
function translateKey(student, keyToChange, translation) {
const newStudent = Object.assign({}, student);
newStudent[translation] = student[keyToChange];
delete newStudent[keyToChange];
return newStudent;
}
const student = {
firstName: "Napoleon",
surname: "Bonaparte",
ilsSontMorts: true,
};
console.log(translateKey(student, "ilsSontMorts", "isDead"));
console.log(student);
或者有點骯臟的方式,保持你的函式原樣并在呼叫你的函式時創建新物件(不推薦)
console.log(translateKey({...student}, "ilsSontMorts", "isDead"));
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/520873.html
標籤:javascript目的
上一篇:訪問嵌套的物件陣列
下一篇:是否可以在類的引數中呼叫變數?
