【问题标题】:Angular 1/JavaScript delete property object as if it never existedAngular 1/JavaScript 删除属性对象,就好像它从未存在过一样
【发布时间】:2017-07-14 12:28:45
【问题描述】:

我想删除一个属性对象,就好像它从不存在一样,void operator (void 0) 和 delete operator march 的解决方案,但我想要另一个替代方案,例如使用 lodash。

我的情况:

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

【问题讨论】:

  • 你可以使用变量 this.project.monthlyRent = undefined;对于对象 this.project.TypeChoose = {};
  • @Shohel 是的,它有效,另一种选择?
  • deletethis.project.montlyRent

标签: javascript angularjs variables object lodash


【解决方案1】:

您可以使用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: .. }

就像说的那样,它是不可变的,所以它不会改变旧对象。

【讨论】:

    【解决方案2】:

    试试这个

    示例 1

    //variable
    this.project.monthlyRent = undefined;
    //Object
    this.project.TypeChoose =  {};
    

    示例 2

    //variable
    delete this.project.monthlyRent;
    
    //Object
    delete this.project.TypeChoose;
    

    【讨论】:

      猜你喜欢
      • 2011-11-04
      • 2021-04-14
      • 2010-09-17
      • 1970-01-01
      • 2016-03-16
      • 2011-01-16
      相关资源
      最近更新 更多