使用lodash从对象中选择定义的值

时间:2016-08-03 10:41:41

标签: javascript lodash

我想根据我提供的一组键来从对象中选择定义的值。

说我有一个像这样的对象:

{
  _id: '1234'
  status: 'complete',
  current_task: null,
  current_task_attempts: 2
}

我想挑选_idstatuscurrent_task属性,但前提是它们不是nullundefined

{
  _id: '1234'
  status: 'complete'
}

我目前的解决方案是:

_.pickBy(_.pick(obj, ['_id', 'status', 'current_task']))

但这感觉有点奇怪。是否有单一的lodash功能可以做我想要的?

2 个答案:

答案 0 :(得分:0)

这不是一个单一的功能。但是,你可以尝试使用一个序列,它完全和你做的一样,但是更具可读性:

_(obj).pick(['_id', 'status', 'current_task']).pickBy().value();

答案 1 :(得分:0)

这不完全是您的问题,但可能是一个非常常见的情况。

var o = { a: 'Not empty', b: null, c: undefined, d: '', e: 100, f: {}, g: [] };

_.pickBy(o, _.isDefined);
// { a: "Not empty", e: 100, f: {…}, g: Array(0) }