为什么 _.pick(object, _.identity) 在 lodash returns 空对象?

Why _.pick(object, _.identity) in lodash returns empty Object?

我正在尝试将下划线移动到 lodash。但是这行代码让我很困惑。

在我当前的项目中,我们有这行代码。

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

很明显它正在尝试删除空 属性。

现在,当我切换到 lodash 时,同一行代码 returns 对我来说是空对象。

我想知道为什么。如何在 lodash 中实现相同的效果?

我在 lodash 和 underscore 网站上都试过了。他们产生不同的结果。

这是来自 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"}

Why _.pick(object, _.identity) in lodash returns empty Object?

因为 lodash 中的 pick 需要将 属性 namesarray 传递给它:

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

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

How do I achieve the same effect in lodash?

Lodash 有一个名为 pickBy 的方法,它接受一个回调函数:

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

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

我遇到了同样的问题,lodash 这个方法的名称与下划线略有不同:

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

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