【发布时间】:2017-09-22 23:35:58
【问题描述】:
我正在尝试将一组日期和值加入到一组日期中,而不过滤掉额外的日期。 LinqJS 参考here 对我将如何实际使用连接感到非常困惑。 here 的问题也没有多大帮助。
编辑:
在此处加入文档:https://svschmidt.github.io/linqjs/Collection.html#Join
看来我需要帮助来弄清楚如何让联接成为 outer 而不是 inner 联接,因此它包含空值/未定义值。
假设我有两个数组:
数组 1:
[
'2017-02-10',
'2017-02-11',
'2017-02-12',
'2017-02-13',
'2017-02-20',
'2017-02-21',
'2017-02-22',
'2017-02-23',
'2017-02-24',
'2017-02-25',
'2017-02-26',
'2017-02-27'
]
数组 2:
[
{ date: '2017-02-10', value: 5 },
{ date: '2017-02-12', value: 8 },
{ date: '2017-02-13', value: 13 },
{ date: '2017-02-21', value: 14 },
{ date: '2017-02-24', value: 11 },
{ date: '2017-02-27', value: 7 }
]
我想加入他们,所以我得到了这个结果(- for undefined):
[
'5',
-,
'8',
'13',
-,
'14',
-,
-,
'11',
-,
-,
'7'
]
我目前的语法:
Enumerable.from(array1).join(array2, '$', '$.date', "outer, inner => inner.value").toArray()
这会产生一个值数组,但结果仍然是内部连接的,它会过滤掉可能是 null/undefined 项的内容。
我该怎么做?对于 LinqJS,join 语法是如何工作的?
【问题讨论】:
-
您不能同时加入这两个数组,因为它们的内容不同。不过,您可以将它们转换为最终的新数组。
-
你需要用Linq还是vanilla js也可以?
-
我想你的意思是这个库:github.com/SvSchmidt/linqjs,我更喜欢 github 的自述文件的样子;)
-
@MaxZoom 你能解释一下为什么会这样吗?我知道你可以用 LinqJS 选择你想加入的键,我只是不知道怎么做。
-
第一个数组是字符串数组,而第二个数组包含对象。您需要沿第二个数组的结构转换第一个数组。
标签: javascript arrays linq join left-join