2017-02-14 3 views
-3

私は配列があります。インデックスif文ルビー

arr = [["group1", "user1", "user2", "user3", "AD-user1", "AD-user2"], 
     ["group2", "user4"]] 

を私はそのような何かやりたい:

arr.each do |item| 
     if (item.include? "AD-user") then 
      arr_h = { "Group" => arr[1], 
         "User" => arr[number_of_element_with_AD-user_name] } 
     else 
     #something else 
     end 
end 

を、私は、インデックスを定義する方法が分かりませんifステートメントで見つかった値のこの場合、私は "AD-user"文字列で始まる2つのユーザー名を持っていますが、それらは多くの場合があります。グループの名前は常にサブアレイの最初の値です。

+1

何[each_with_index](http://apidock.com/ruby/Enumerable/each_with_index)についてはどうですか? –

+0

この場合、どのように使用するのですか? – mila002

+1

期待される出力は何ですか?配列に '' AD-user''を含む複数の項目がある場合はどうなりますか?次の繰り返しでオーバーライドされる可能性のある変数( 'arr_h')を割り当てるとき、この文脈では' each 'は本当に意味がありますか? – spickermann

答えて

1

これを試してみてください:

new_ary = [] 
arr.each do |a| 
    b = a.select{|e| e.include? "AD-user"} 
    if b.empty? 
    #something else 
    new_ary << {"Group" => a[0], "Users" => "AD-user not available"} 
    else 
    new_ary << {"Group" => a[0], "Users" => b} 
    end 
end 

> new_ary 
#=> [{"Group"=>"group1", "Users"=>["AD-user1", "AD-user2"]}, {"Group"=>"group2", "Users"=>"AD-user not available"}] 

new_ary = [] 
arr.each do |a| 
    b = a.select{|e| e.include? "AD-user"} 
    new_ary << {"Group" => a[0], "Users" => b} 
end 

> new_ary 
#=> [{"Group"=>"group1", "Users"=>["AD-user1", "AD-user2"]}, {"Group"=>"group2", "Users"=>[]}] 
+1

それは動作します、ありがとうございます。 – mila002