2016-03-23 3 views
2

Ich versuche, Unterstrich zu lodash zu bewegen. Aber diese Codezeile verblüfft mich.Warum _.pick (object, _.identity) in lodash gibt ein leeres Objekt zurück?

In meinem aktuellen Projekt haben wir diese Codezeile.

obj = _.pick(obj, _.identity); 

das ist ziemlich offensichtlich, dass es leer Eigenschaft zu löschen versucht.

Jetzt, wenn ich zu lodash wechseln, gibt die gleiche Zeile des Codes leeres Objekt für mich zurück.

Ich versuche herauszufinden, warum. Wie erreiche ich den gleichen Effekt in lodash?

Ich habe dies sowohl auf lodash und Undercore-Websites versucht. Sie produzieren unterschiedliche Ergebnisse. Diese

ist von lodash

var obj = {_v:'10.1', uIP:'10.0.0.0', _ts:'123'} 
_.pick(obj, _.identity); 
Object {} 

Dies ist von Strich

var obj = {_v:'10.1', uIP:'10.0.0.0', _ts:'123'} 
_.pick(obj, _.identity); 
Object {_v: "10.1", uIP: "10.0.0.0", _ts: "123"} 
+0

Haben ein Blick auf die Dokumente: https://lodash.com/docs#pick (und beachten Sie die Methode, die kommt * nach dem *). –

+0

Oh, das ist es. Ich dachte, lodash ist kompatibel mit Unterstrichen. Wenn Sie das als Antwort verwenden können. Danke vielmals. – toy

+0

Felix ist ein Biest, so schnell .... – JordanHendrix

Antwort

3

Warum _.pick (Objekt, _.identity) in lodash kehrt leer Objekt?

Da pick in lodash erwartet ein Array von Eigentum Namen an sie übergeben werden:

var object = { 'a': 1, 'b': '2', 'c': 3 }; 

_.pick(object, ['a', 'c']); 
// → { 'a': 1, 'c': 3 } 

Wie kann ich den gleichen Effekt in lodash erreichen?

Lodash hat eine Methode pickBy genannt, die eine Callback-Funktion übernimmt:

var object = { 'a': 1, 'b': '2', 'c': 3 }; 

_.pickBy(object, _.isNumber); 
// → { 'a': 1, 'c': 3 } 
0

ich hatte das gleiche Problem, lodash einen etwas anderen Namen für diese Methode als Unterstrich hat:

var object = { 'a': 1, 'b': '2', 'c': 3 }; 

_.pickBy(object, _.isNumber); 
// → { 'a': 1, 'c': 3 } 
Verwandte Themen