我有以下数组结构:
[ ["one_id",[["1a", 10], ["1b", 54], ["1c", 43]]],
["two_id",[["2a", 32], ["2b", 76], ["2c", 34]]],
["thr_id",[["3a", 85], ["3b", 13], ["3c", 42]]],
["fou_id",[["4a", 15], ["4b", 21], ["4c", 65]]],
]
我想删除嵌套数组的“值”以获得如下输出:
[ ["one_id", ["1a","1b","1c"]],
["two_id", ["2a","2b","2c"]],
["thr_id", ["3a","3b","3c"]],
["fou_id", ["4a","4b","4c"]],
]
有什么建议吗?
答案 0 :(得分:2)
有代码
arr = [ ["one_id",[["1a", 10], ["1b", 54], ["1c", 43]]],
["two_id",[["2a", 32], ["2b", 76], ["2c", 34]]],
["thr_id",[["3a", 85], ["3b", 13], ["3c", 42]]],
["fou_id",[["4a", 15], ["4b", 21], ["4c", 65]]],
]
arr2 = arr.map do |element|
r = [element[0]]
r << element[1].map(&:first)
r
end
答案 1 :(得分:2)
这是一种非破坏性的:
array.map{|k, v| [k, v.map(&:first)]}
#=> [
["one_id", ["1a", "1b", "1c"]],
["two_id", ["2a", "2b", "2c"]],
["thr_id", ["3a", "3b", "3c"]],
["fou_id", ["4a", "4b", "4c"]]
]
答案 2 :(得分:1)
如果通过“删除'值'”,则意味着“将最内层数组替换为第一个元素:
警告:此代码包含幻数,甚至不是一般的。
require "pp"
a = [ ["one_id",[["1a", 10], ["1b", 54], ["1c", 43]]],
["two_id",[["2a", 32], ["2b", 76], ["2c", 34]]],
["thr_id",[["3a", 85], ["3b", 13], ["3c", 42]]],
["fou_id",[["4a", 15], ["4b", 21], ["4c", 65]]],
]
a.each do |lv1|
lv1[1].map! &:first
end
pp a
# =>
# [["one_id", ["1a", "1b", "1c"]],
# ["two_id", ["2a", "2b", "2c"]],
# ["thr_id", ["3a", "3b", "3c"]],
# ["fou_id", ["4a", "4b", "4c"]]]
答案 3 :(得分:0)
require "pp"
array = [ ["one_id",[["1a", 10], ["1b", 54], ["1c", 43]]],
["two_id",[["2a", 32], ["2b", 76], ["2c", 34]]],
["thr_id",[["3a", 85], ["3b", 13], ["3c", 42]]],
["fou_id",[["4a", 15], ["4b", 21], ["4c", 65]]],
]
array.collect{|k, v| [k, v.collect(&:first)]}
# [["one_id", ["1a", "1b", "1c"]],
# ["two_id", ["2a", "2b", "2c"]],
# ["thr_id", ["3a", "3b", "3c"]],
# ["fou_id", ["4a", "4b", "4c"]]]