抱歉標題不好,我只是不知道如何在沒有示例的情況下表達我想要的東西。
我有以下
[
[ [1,2], true ],
[ [3,4], false ]
]
我想得到
[
[1, true],
[2, true],
[3, false],
[4, false]
]
在紅寶石中有什么干凈的方法可以做到這一點嗎?
uj5u.com熱心網友回復:
您可以flat_map在外部陣列和map內部陣列上使用組合。就像是:
arr = [
[ [1,2], true ],
[ [4,5], false ]
]
arr.flat_map do |nums, val|
nums.map {|num| [num, val]}
end
uj5u.com熱心網友回復:
您可以使用Array#map和Array#product:
arr = [
[ [1,2], true ],
[ [3,4], false ]
].flat_map { |(arr, bool)| arr.product([bool]) }
# [[1, true], [2, true], [3, false], [4, false]]
uj5u.com熱心網友回復:
使用 Enumerable#each_with_object
ary =
[
[[1, 2], true],
[[3, 4], false]
]
ary.each_with_object([]) do |(nums, boolean), new_ary|
nums.each { |num| new_ary << [num, boolean] }
end
# => [[1, true], [2, true], [3, false], [4, false]]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/418358.html
標籤:
上一篇:Ruby:如何從unicode文本中僅分解印刷連字?
下一篇:RoR:在控制器中執行SQL
