2016-03-23 2 views
2

Я пытаюсь переместить подчеркивание в lodash. Но эта строка кода меня озадачивает.Почему _.pick (объект, _.identity) в lodash возвращает пустой объект?

В моем текущем проекте у нас есть эта строка кода.

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

Это довольно очевидно, что он пытается удалить пустую собственность.

Теперь, когда я переключаюсь на lodash, одна и та же строка кода возвращает пустой объект для меня.

Я пытаюсь понять, почему. Как достичь такого же эффекта в lodash?

Я пробовал это на обоих сайтах lodash и подчеркивания. Они дают разные результаты.

Это из lodash

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

Это из Подчеркивание

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

Есть посмотрите на документы: https://lodash.com/docs#pick (и обратите внимание на метод, который приходит * после *). –

+0

О, вот и все. Я думал, что lodash совместим с подчеркиванием. Если вы можете сказать это как ответ. Большое спасибо. – toy

+0

Феликс - зверь, так быстро .... – JordanHendrix

ответ

3

Почему _.pick (объект, _.identity) в lodash возвращает пустой объект?

Поскольку pick в lodash ожидает массива имущества имен быть передан ему:

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

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

Как добиться того же эффекта в lodash?

Lodash имеет метод pickBy который принимает функцию обратного вызова:

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

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

Я была такая же проблема, lodash имеет немного другое название для этого метода, чем подчеркивание:

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

_.pickBy(object, _.isNumber); 
// → { 'a': 1, 'c': 3 } 
Смежные вопросы