【发布时间】:2020-10-16 18:42:19
【问题描述】:
我有这样的数组:
const one = [
{id: 1, field1: "a"},
{id: 2, field1: "b"},
{id: 3, field1: "c"},
{id: 4, field1: "d"}
]
const two = [
{id: 4, field2: "4"},
{id: 1, field2: "1"}
]
// what I want to achieve:
const result = [
{id: 1, field1: "a", field2: "1"},
{id: 4, field1: "d", field2: "4"}
]
我想合并一和二,所以我得到了结果。这与 SQL 连接非常相似,但我想在 JavaScript 代码中完成所有这些操作。注意:
- 这是
id“列”的“加入”。 - 结果的顺序是
one数组的顺序(按ID排序只是巧合相同的顺序) - 结果中存在两个数组中的字段
我自己想出了如何做到这一点,但是代码很笨重且难以阅读。基本上,您过滤one 并删除two 中不存在的元素,然后映射one 并合并two 数组的字段。
有没有更简洁的方法来实现这一点?我正在使用 lodash,我希望那里有一个函数可以让这更容易,但我还没有找到。
【问题讨论】:
-
您肯定可以使用 .reduce 完成此操作。
-
所以使用JS数据库:npmjs.com/package/database-js
-
你为什么有
field1和field2? -
@Justinas 有趣的库,但它似乎与我想要做的事情并不完全一致。如果有的话,那就是矫枉过正了。
标签: javascript typescript lodash