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.Math2,您可以执行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);
添加回答
举报
