我正在為 Javascript 物件實作遞回加密,但我想出的解決方案是無效的。這導致了一些奇怪的錯誤,因為它直接操作物件。有沒有辦法使這個功能(回傳一個新的加密物件)?
我不知道如何使它保持遞回并同時回傳一個新物件(功能性)。具體來說這是encryptObject(dd)
class Security {
static encryptText = (text) => {
//function to encrypt text/strings
};
static encryptObject(dd) {
try {
for (let d in dd) {
if (!dd[d]) {
continue;
} else if (typeof dd[d] !== "object") {
dd[d] = this.encryptText(dd[d]);
} else {
this.encryptObject(dd[d]);
}
}
} catch (e) {
console.log(e.message `error encrypting`);
}
}
const data = {dog:"john", cat:"anders", weapons:{laser:"3",sword:"1"}}
Security.encrypt(data)
我想改為這樣呼叫函式
const data = {dog:"john", cat:"anders", weapons:{laser:"3",sword:"1"}}
const encryptedData = Security.encrypt(data)
uj5u.com熱心網友回復:
只是創建并回傳一個新物件?
static encryptObject(objectToEncrypt) {
try {
const newObj = {};
for (const [key, value] of Object.entries(objectToEncrypt)) {
if (!value) {
newObj[key] = value;
} else if (typeof value !== "object") {
newObj[key] = this.encryptText(value);
} else {
newObj[key] = this.encryptObject(value);
}
}
return newObj;
} catch (e) {
console.log(e.message `error encrypting`);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/439492.html
標籤:javascript 算法 递归 加密 函数式编程
