【发布时间】:2020-12-10 08:49:44
【问题描述】:
我正在尝试将字符串数组转换为每个成员使用字符串作为键的对象,并将值初始化为 0。(用于字数统计的经典累加器,对吗?)
输入数据的样式如下:
%dw 2.0
output application/dw
var hosts = [
"t.me",
"thewholeshebang.com",
"thegothicparty.com",
"windowdressing.com",
"thegothicparty.com"
]
要获得累加器,我需要这种风格的结构:
var histogram_acc = {
"t.me" : 1,
"thewholeshebang.com" : 1,
"thegothicparty.com" : 2,
"windowdressing.com" : 1
}
我的想法是,这是 reduce() 的一个灌篮案例,对吧?
所以要获得去重的主机列表,我们可以使用这个短语:
hosts distinctBy $
到目前为止很开心。但现在对我来说,它变得邪恶了。
我认为这可能是黄金:
hosts distinctBy $ reduce (ep,acc={}) -> acc ++ {ep: 0}
但问题是这并没有那么好。 reduce() 的 lambda 的第一个参数表示迭代元素,在本例中为端点或地址。 lambda 将新对象附加到累加器。
嗯,这就是我希望它发生的方式,但我得到了这个:
{
ep: 0,
ep: 0,
ep: 0,
ep: 0
}
我有点需要它做得比这更好。
【问题讨论】: