我有一个数组
@a = ["a","b","c","d"]
这是我的哈希
@a_hash ={"b"=> ["1","2","3"]}
现在我想将"b"
的{{1}}值替换为数组。
我的预期结果是
@a_hash
我怎样才能在红宝石中得到这个?
答案 0 :(得分:5)
也许是这样:
a = ["a","b","c","d"]
a_hash ={"b"=> ["1","2","3"]}
a.map! { |x| a_hash[x] || a }
a #=> ["a",["1","2","3"],"c","d"]
答案 1 :(得分:3)
您可以使用#fetch
方法
@a = ["a","b","c","d"]
#=> ["a", "b", "c", "d"]
@a_hash ={"b"=> ["1","2","3"]}
#=> {"b"=>["1", "2", "3"]}
@a.map! { |e| @a_hash.fetch(e, e) }
#=> ["a", ["1", "2", "3"], "c", "d"]
答案 2 :(得分:2)
使用Array#index
:
@a[@a.index("b")] = @a_hash["b"]
@a
#=> ["a", ["1", "2", "3"], "c", "d"]
如果您只出现一次“b&#39”,它可能是最快的解决方案。 每次出现" b":
@a.map! {|e| @a_hash["b"] if e == "b"}
答案 3 :(得分:0)
您可以将元素指定为散列键的值:
$('.directions-and-alternative-options-toggle').on('click', function(){
var $img = $(this).find('img');
if($(this).hasClass('collapsed')){
$img.attr('src', $img.data('collapse_icon'));
} else {
$img.attr('src', $img.data('expand_icon'));
}
})
那就是它。