2016-04-19 13 views
1

In meiner App verwende ich angular.js.So entfernen Sie Funktionen von Objekt JavaScript

ich brauche (durch PUT-Anfrage) zu senden, ein Objekt mit 3 Eigenschaften, wie folgt aus:

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

Aber wenn ich console.log(item) tun, zeigt es eine Menge Informationen brauche ich nicht, wie $delete , $get, und so weiter. Gefällt mir:

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

Ich denke, es ist, weil ein JavaScript-Versprechen oder etwas ist.
Gibt es eine Möglichkeit, nur a, b und c zu bekommen? Vielleicht mit lodash?


Meine Lösung:

benutzte ich lodash wie folgt aus:

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

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

Danke,
Jorge

+0

Sieht so aus, als ob Sie Ihre Daten auf ein '$ resource' oder' $ http' Objekt setzen, haben Sie versucht, Ihre Daten einfach auf ein neues Objekt zu setzen: 'var item = {}; item.a = 1; 'etc –

+0

Ich habe viele Eigenschaften, dies ist nur ein Beispiel, es hat mehr, 20 Ich glaube und ich will nicht so 20 Mal gehen: D. – jBaumann

+1

Ich würde Ihre Lösung als eine tatsächliche Antwort dann markieren Sie es für zukünftige SO-Benutzer – Chris

Antwort

0

benutzte ich lodash_.pick wie folgt aus:

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

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

Artikel ist jetzt von Funktionen frei, einfach Ihr Info.

2

Sie werden aus Object erben, nicht von item gehört. Wenn Sie über eigene Eigenschaften iterieren möchten, verwenden Sie eine for ... in Schleife.

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

Es führt eine Schleife für alle Funktionen, Eigenschaften und alle Objekte um das Objekt. Ich ging schließlich mit ** lodash ** '.pick', aber trotzdem danke. Ich habe etwas gelernt. – jBaumann

1

Dies ist keine perfekte Lösung, aber es sollte funktionieren:

Statt:

submitFunction(object, function() {}) 

tun das:

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

Sie es in aufspalten:

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