使用lodash将对象的值的子集作为管道分隔的字符串

时间:2017-06-21 21:36:30

标签: javascript lodash

我试图使用Lodash来获取除少数字段之外的对象的值。假设我们给出了以下对象:

var x = {
    id: 0,  // <-- id is excluded from output
    a: 1,
    b: 2,
    c: 3
};

真实世界的对象同样相当小,并且总是有一个id字段,其他字段可能会有所不同。

我想生成一个以竖线分隔的字符串,其中包含此对象中的值(无特定顺序),再次排除某些字段。我有以下代码可以正常工作。

var keys_i_want = _
    .chain(x)
    .keys()
    .filter(x=> x !== "id")
    .value();

var result = _.values(_.pick(x, keys_i_want)).join("|");  // --> '1|2|3'

此示例的所需结果为1|2|3

我正在寻找一种不那么冗长的方式来解决这个问题。当然Lodash有一个更直接的方法来获得一个对象的价值几乎没有?我在不到5分钟前编写了上面的代码,我已经发现它很容易跟随。

我们挑选值的最后一步可以合并到chain表达式中吗?是否有一种简洁而直接的方法来实现这一目标?

1 个答案:

答案 0 :(得分:1)

您可以使用lodash函数omit

var withoutId = _.omit(x, ['id']);
var result = _.values(withoutId).join('|'); // ---> '1|2|3'