如何从对象javascript中删除函数

时间:2016-04-19 18:19:25

标签: javascript angularjs object lodash

在我的应用中,我使用 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 );

谢谢,
乔治

3 个答案:

答案 0 :(得分:2)

它们是Object的继承,不归item所有。

如果要迭代自己的属性,请使用for ... in循环。

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

答案 1 :(得分:1)

这不是一个完美的解决方案,但它应该有效:

而不是:

submitFunction(object, function () {})

执行:

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

您可以将其拆分为:

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

答案 2 :(得分:1)

我这样使用了lodash _.pick

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

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

项目现在没有功能,只有您的信息。