本地加入一个带有块的数组

时间:2016-12-12 16:47:04

标签: ruby

是否存在将数组的所有元素连接到如下所示的唯一元素的本机方法:

[
  {a: "a"},
  {b: "b"}
].join do | x, y |
  x.merge(y)
end

输出如下内容:

{
  a: "a",
  b: "b"
}

我在我的数组中使用哈希的事实是一个例子,我可以说:

[
  0,
  1,
  2,
  3
].join do | x, y |
  x + y
end

6作为值结束。

2 个答案:

答案 0 :(得分:5)

Enumerable#inject涵盖了这两种情况:

a = [{a: "a"}, {b: "b"}]
a.inject(:merge) #=> {:a=>"a", :b=>"b"}
b = [0, 1, 2, 3]
b.inject(:+) #=> 6

inject"总和"使用提供的方法的数组。在第一种情况下,"添加"总和和当前元素通过合并完成,在第二种情况下,通过添加完成。

如果数组为空,inject将返回nil。要使其返回其他内容,请指定初始值(感谢@Hellfar):

[].inject(0, :+) #=> 0

答案 1 :(得分:3)

$ npm install -g typings;
$ typings install --save --global dt~geojson
$ typings install --save --global dt~mapbox-gl