配列[1,2,3,1,2,3]
を持っていて、[1,3,1,2,3]
という配列から2
の最初のインスタンスを削除したいとします。最も簡単な方法は何ですか?配列から一致する要素の最初のインスタンスを削除する
28
A
答えて
61
li.delete_at(li.index(n) || li.length)
li[li.length]
範囲外であるため、|| li.length
はn
がリストにない場合を扱います。
irb(main):001:0> li = [1,2,3,1,2,3]
=> [1, 2, 3, 1, 2, 3]
irb(main):002:0> li.delete_at(li.index(2) || li.length)
=> 2
irb(main):003:0> li.delete_at(li.index(42) || li.length)
=> nil
irb(main):004:0> li
=> [1, 3, 1, 2, 3]
12
|| li.length
は(TypeError例外につながることになる)li.delete_at
にnil
を送るのを避けるためにある場合は、より読みやすいバージョンは、この
li.delete_at li.index(42) unless li.index(42).nil?
+6
おそらく 'li.index(42)'を変数に格納して、検索を2回行わないようにしたいとします。パフォーマンスは、大規模なアレイではるかに優れています。 – Kelvin
4
ように見えるかもしれません多分それはSTDLIBの一部になる必要があります:
class Array
def delete_first item
delete_at(index(item) || length)
end
end
関連する問題
- 1. 最初の一致を削除する
- 2. JSON配列 - 最初の要素を削除する
- 3. mongodb配列から最初のn個の要素を削除するには?
- 4. 配列から要素の一部を削除する
- 5. VBA配列の最初の要素を削除します
- 6. リスト内の要素と一致する要素をセットから削除する
- 7. で配列の最初と最後の要素を削除する
- 8. 特定の文字列に一致する配列からすべての要素を削除する
- 9. JavaScriptの配列の最初の要素/配列を削除します。
- 10. 3要素タプルの最初の要素を削除する
- 11. 配列から要素のセットを削除すると、私は配列から最後の2つの要素を削除しようとしているC++
- 12. LINQ結果から削除する方法、配列から要素を一致させる
- 13. 配列からいくつかの要素を削除する
- 14. 、配列から要素を削除
- 15. 配列matlabから要素を削除
- 16. as3の配列の要素から関数を削除する
- 17. Pythonの配列から空の要素を削除する
- 18. 条件を満たす配列の最後に一致する要素を削除します。
- 19. レデューサー状態の配列から最後の要素を削除する
- 20. アルゴリズム - 配列から重複する要素を削除する
- 21. python3の配列から要素を削除する
- 22. Rails:ハッシュの配列から要素を削除する
- 23. C言語のParameterInfo配列から要素を削除する
- 24. 配列から特定の要素を削除する方法
- 25. Python-deltatime配列から特定の要素を削除する
- 26. 空の要素を配列から削除する
- 27. 複数の配列から要素を削除するcakephp
- 28. 配列から要素を削除する際の問題
- 29. PHPセッション配列から単一の要素を削除するには?
- 30. 文字列から配列要素を削除する方法
ありがとうございます。私はこれをエレガントに表現しようと頭を打ちました。 –
私は '|| li.length'誰でも説明できます – gates
rubyの値はブール値として扱うことができ、 'false'と' nil'だけがfalseに評価されます。二重パイプのシンタックスは便利な省略表現です。 'a || 「b」は「a、それが無ければ、次にb」を意味する。 – erich2k8