gpt4 book ai didi

Ruby 数组映射并加入一个循环

转载 作者:数据小太阳 更新时间:2023-10-29 07:48:09 26 4
gpt4 key购买 nike

数组示例

[
[
"Francis",
"Chartrand",
"email@email.com"
],
[
"Francis",
"Chartrand",
"second_email@email.com"
],...
]

想要的结果

"email@email.com, second_email@email.com, ..."

我的解决方案(两个循环)

array.map{|a| a[2]}.join(", ")

是否可以用一个循环来做到这一点?

最佳答案

使用 Enumerable#inject我们可以在一个循环中完成任务:

a = [
["Francis", "Chartrand", "email@email.com"],
["Francis", "Chartrand", "second_email@email.com"]
]
a.inject(nil) {|str, arr| str ? (str << ', ' << arr[2]) : arr[2].dup}
#=> "email@email.com, second_email@email.com"

然而,这只是学术上的事情,因为 map/join 无论如何都更快且更易读。参见 this benchmark :

             user   system    total       real
map/join 1.440000 0.000000 1.440000 ( 1.441858)
inject 2.220000 0.000000 2.220000 ( 2.234554)

关于Ruby 数组映射并加入一个循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19118688/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com