【问题标题】:How to remove functions from object javascript如何从对象javascript中删除函数
【发布时间】:2016-08-12 02:33:51
【问题描述】:

在我的应用中,我使用的是 angular.js

我需要(通过 PUT 请求)发送一个具有 3 个属性的对象,如下所示:

var item = {
  a: 1,
  b: 2,
  c: 3
}

但是当我做console.log(item)的时候,却显示了很多我不需要的信息,比如$delete$get等等。像这样:

 {  
   ...
   $delete: function (params, success, error),
   $get: function (params, success, error),
   ...
   a: 1,
   b: 2,
   c: 3
}

我认为这是因为是 javascript 承诺之类的。
有没有办法只得到abc?也许用 lodash?


我的解决方案:

我像这样使用 lodash

 var valuesToPick = ['title', 'languageCode', 'jobTitle', 'location','economySegment', 'companyDescription' ...];

 var item = _.pick( vm.form, valuesToPick );

【问题讨论】:

  • 看起来您将数据放在$resource$http 对象上,您是否尝试将数据放在新对象上,例如:var item= {}; item.a = 1;
  • 我有很多属性,这只是一个例子,它还有更多,我相信有 20 个,我不想这样走 20 次 :D。
  • 我会将您的解决方案添加为实际答案,然后为未来的 SO 用户将其标记为正确
  • 我已经做到了。给你。

标签: javascript angularjs object lodash


【解决方案1】:

我这样使用lodash_.pick

 var valuesToPick = ['title', 'languageCode', 'jobTitle', 'location','economySegment', 'companyDescription' ...];

 var item = _.pick( vm.form, valuesToPick );

Items 现在没有任何功能,只有您的信息。

【讨论】:

    【解决方案2】:

    这不是一个完美的解决方案,但它应该可以工作:

    代替:

    submitFunction(object, function () {})
    

    做:

    submitFunction(JSON.parse(angular.toJson(object)), function () {})
    

    你可以把它分成:

    var cleanObject = JSON.parse(angular.toJson(object))
    submitFunction(cleanObject, function () {})
    

    【讨论】:

      【解决方案3】:

      它们继承自Object,不属于item

      如果您想遍历自己的属性,请使用 for...in 循环。

      for (property in item) {
          item[property];
      }
      

      【讨论】:

      • 它循环遍历对象周围的所有函数、属性和所有内容。我终于选择了 lodash _.pick,但还是谢谢你。我学到了一些东西。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-19
      • 1970-01-01
      • 2015-07-09
      • 2010-09-25
      • 2018-08-15
      • 1970-01-01
      • 2022-07-06
      相关资源
      最近更新 更多