87

作成済みと割り当て済みの 2 つのタスクの配列があります。作成されたタスクの配列から、割り当てられたすべてのタスクを削除したいと考えています。これが私の作業ですが、面倒なコードです:

    @assigned_tasks = @user.assigned_tasks
    @created_tasks = @user.created_tasks

    #Do not show created tasks assigned to self
    @created_not_doing_tasks = Array.new
    @created_tasks.each do |task|
        unless @assigned_tasks.include?(task)
            @created_not_doing_tasks << task
        end
    end

もっと良い方法があると確信しています。それは何ですか?ありがとう :-)

4

2 に答える 2

181

Ruby では配列を減算できます。

[1,2,3,4,5] - [1,3,4]  #=> [2,5]

ary - other_ary → new_ary 配列の違い

other_ary にも表示される項目を削除して、元の配列のコピーである新しい配列を返します。順序は元の配列から保持されます。

ハッシュと eql を使用して要素を比較しますか? 効率化の方法。

[ 1, 1, 2, 2, 3, 3, 4, 5 ] - [ 1, 2, 4 ] #=> [ 3, 3, 5 ]

セットのような動作が必要な場合は、ライブラリ クラス Set を参照してください。

アレイのドキュメントを参照してください。

于 2009-07-28T06:16:53.710 に答える