3 回答

TA貢獻1809條經驗 獲得超8個贊
const { Secret, ...result } = Data;
result.mathDivBy2 = function() { return this.Math/2; }
console.log(result);
要獲得 Math/2,請致電result.mathDivBy2();
如果您想要更方便的訪問,而不是函數,您可以為result對象定義 getter:
Object.defineProperty(result, 'mathDivBy2', {
get: function() { return this.Math/2; }
});
并像使用任何其他屬性一樣使用它:result.mathDivBy2

TA貢獻1772條經驗 獲得超6個贊
您可以按如下方式解構Math / 2您的對象并在解構后分配:
var UserData = { Id: 123, Name: "Hello World" };
var Data = { Main: "Data", Secret: "Data1", Math: 22, ...UserData };
var { Secret, ...result } = Data;
result.Math /= 2;
console.log(result);

TA貢獻2036條經驗 獲得超8個贊
要刪除
Secret
鍵值對,您只需要做delete Data.Secret
.要除以
Data.Math
2,您可以執行Data.Math /= 2
.
const UserData = {
Id: 123,
Name: "Hello World"
}
const Data = {
Main: "Data",
Secret: "Data1",
Math: 22,
...UserData
}
// Delete `Data.Secret`
delete Data.Secret;
// Divide `Data.Math`
Data.Math /= 2;
console.log(Data);
但是,如果您不太確定傳入的形狀UserData并希望確保只允許列入白名單的鍵值對,則必須定義允許的鍵,然后遍歷整個對象以刪除不需要的鍵:
const UserData = {
Id: 123,
Name: "Hello World"
}
const Data = {
Main: "Data",
Secret: "Data1",
Math: 22,
...UserData
}
// Whitelist allowed object keys
const allowedKeys = ['Main', 'Math', 'Id', 'Name'];
Object.keys(Data).forEach(key => {
if (!allowedKeys.includes(key))
delete Data[key];
});
// Divide `Data.Math`
Data.Math /= 2;
console.log(Data);
添加回答
舉報