Angular 1 / JavaScript删除属性对象,就好像它从未存在过一样

时间:2017-07-14 12:28:45

标签: javascript angularjs variables object lodash

我想删除一个属性对象,就好像它从未存在过一样,void运算符的解决方案(void 0)和删除运算符march但是我想要另一个使用lodash的替代方法。

我的情况:

//variable
this.project.monthlyRent = void 0
//Object
this.project.TypeChoose =  void 0

2 个答案:

答案 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;