码迷,mamicode.com
首页 > 移动开发 > 详细

Merge array and hash in ruby if key appears in array

时间:2018-12-04 11:33:14      阅读:235      评论:0      收藏:0      [点我收藏+]

标签:css   csdn   sdn   ase   method   map   tracking   Fix   lin   

I have two arrays one = [1,2,3,4,5,6,7] and two = [{1=>‘10‘},{3=>‘22‘},{7=>‘40‘}]

Two will have one.length hashes or less. I want a new array of values from two if it‘s key appears in one, if not then use 0. The new array would be [10,0,22,0,0,0,40] What is the best way to do this?

I‘d do it using Enumerable#reduce and Hash#values_at:

two.reduce({}, :merge).values_at(*one).map(&:to_i)
# => [10, 0, 22, 0, 0, 0, 40]

h = [{1 => ‘10‘}, {3 => ‘22‘}, {7 => ‘40‘}].inject(:merge)
one.map{|e| h[e].to_i}
# => [10, 0, 22, 0, 0, 0, 40]


Merge array and hash in ruby if key appears in array

标签:css   csdn   sdn   ase   method   map   tracking   Fix   lin   

原文地址:https://www.cnblogs.com/ldxsuanfa/p/10062513.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!