我试图将下划线移到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 :(得分:6)
为什么lodash中的_.pick(object,_.identity)返回空对象?
因为lodash中的pick
期望将数组属性名称传递给它:
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 }
答案 1 :(得分:1)
我有同样的问题,lodash这个方法的名称与下划线略有不同:
var object = { 'a': 1, 'b': '2', 'c': 3 };
_.pickBy(object, _.isNumber);
// → { 'a': 1, 'c': 3 }