javascript - 使用 lodash 获取对象值的子集作为管道分隔字符串

标签 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表达式中吗?有没有更简洁、更直接的方法来实现这一目标?

最佳答案

您可以使用lodash函数omit :

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

关于javascript - 使用 lodash 获取对象值的子集作为管道分隔字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44686670/

相关文章:

javascript - 如何使用 Lodash 通过多个潜在属性过滤对象集合?

javascript - Lodash 自动生成 TreeView

javascript - 在 vaadin 8 中将文本复制到剪贴板

JavaScript - 过滤掉两个数组并去掉重复项

javascript - 如何从 html 输入框获取刷新时间并使用该参数刷新它?

javascript - 触摸设备、单击和双击事件处理程序 jQuery/Javascript?

javascript - 使用通用键重构对象/数组

javascript - 在javascript中使用许多条件对数组进行排序

javascript - JSON 数据不会出现在另一台计算机上

javascript - 解释 javascript 中的奇怪行为