配列[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. JSON配列 - 最初の要素を削除する
- 2. 最初の一致を削除する
- 3. mongodb配列から最初のn個の要素を削除するには?
- 4. VBA配列の最初の要素を削除します
- 5. で配列の最初と最後の要素を削除する
- 6. 特定の文字列に一致する配列からすべての要素を削除する
- 7. 3要素タプルの最初の要素を削除する
- 8. 、配列から要素を削除
- 9. 配列matlabから要素を削除
- 10. LINQ結果から削除する方法、配列から要素を一致させる
- 11. 配列から要素のセットを削除すると、私は配列から最後の2つの要素を削除しようとしているC++
- 12. Pythonの配列から空の要素を削除する
- 13. C言語のParameterInfo配列から要素を削除する
- 14. 配列から特定の要素を削除する方法
- 15. Rails:ハッシュの配列から要素を削除する
- 16. 複数の配列から要素を削除するcakephp
- 17. シェルスクリプトの条件が一致したときに配列から要素を削除する
- 18. 内部から要素を削除する配列プロトタイプ
- 19. C++で配列から要素を削除する
- 20. プリミティブ配列から要素を削除する
- 21. JSON配列から要素を削除するには
- 22. 配列から要素を削除する(Java)
- 23. 配列から要素を削除するRuby
- 24. 最初の要素を配列から外す
- 25. 配列から要素を削除する - 配列インデックスをPHPで
- 26. mongodbの配列から要素を削除します
- 27. 配列関数は配列から最初の文字を削除します
- 28. 最初の配列の削除
- 29. 3つの要素から最初の要素と右端から左マージンを削除する
- 30. 文字列がタグと一致するときに配列要素を削除する
ありがとうございます。私はこれをエレガントに表現しようと頭を打ちました。 –
私は '|| li.length'誰でも説明できます – gates
rubyの値はブール値として扱うことができ、 'false'と' nil'だけがfalseに評価されます。二重パイプのシンタックスは便利な省略表現です。 'a || 「b」は「a、それが無ければ、次にb」を意味する。 – erich2k8