我想删除一个属性对象,就好像它从未存在过一样,void运算符的解决方案(void 0)和删除运算符march但是我想要另一个使用lodash的替代方法。
我的情况:
//variable
this.project.monthlyRent = void 0
//Object
this.project.TypeChoose = void 0
答案 0 :(得分:2)
您可以使用delete operator,但我并不特别推荐使用该替代方案。如果您使用它,您需要了解它的局限性以及如果您使用严格模式它的行为方式。
如果你想要一个不可变的替代品,你可以像你说的那样使用lodash。你要做的是使用_.omit
(用于创建省略了给定属性的新对象)或_.pick
(用于创建仅包含给定属性的新对象)。像这样:
var obj = {
firstname: "Nikolaj",
lastname :"Larsen",
age:99
};
var result = _.omit(obj , ['age']);
// result: { firstname: .., lastname: .. }
和
var obj = {
firstname: "Nikolaj",
lastname :"Larsen",
age:99
};
var result = _.pick(obj , ['firstname', 'lastname']);
// result: { firstname: .., lastname: .. }
如上所述,它是不可变的,所以它不会改变旧的对象。
答案 1 :(得分:0)
试试这个
示例1
//variable
this.project.monthlyRent = undefined;
//Object
this.project.TypeChoose = {};
示例2
//variable
delete this.project.monthlyRent;
//Object
delete this.project.TypeChoose;