2017-04-07 2 views

Antwort

-1

Um zu überprüfen, ob das Array ein leeres Element hat, eine der vielen Möglichkeiten, es zu tun ist:

arr.any?(&:blank?) 
+0

Funktioniert nur in Schienen ... – ddubs

+0

'blank?' Ist nicht dasselbe wie 'leer?'. –

0

nicht sicher, was Sie damit tun wollen, aber es gibt durchaus ein paar Wege, diese Katze zu häuten. Mehr Informationen helfen würden, sie verengen einige nach unten ...

["0", "108", "109", "110", "111", "112", "994", "995", "1001", "1002", "", "65534"].map { |v| v.empty? } 
=> [false, false, false, false, false, false, false, false, false, false, true, false] 

["0", "108", "109", "110", "111", "112", "994", "995", "1001", "1002", "", "65534"].each_with_index { |v,i| puts i if v.empty? } 
10 
+0

Ich muss den Indexwert des Array überprüfen, das leer ist und es in einer Variablen speichern, wie unter code checking Benutzer-ID in Linux-Box. beschreiben passwd.where {user = ~ /.*/} .uids do sein ("Länge") {sollte nicht 0 0 Ende –

-1

Diese Tests für Leere:

'foo'.empty? # => false 
''.empty? # => true 

[1].empty? # => false 
[].empty? # => true 

{a:1}.empty? # => false 
{}.empty? # => true 

Test, um zu sehen, ob ein Element in einem Array leer ist, einen ähnlichen Test verwenden würde:

['foo', '', [], {}].select { |i| i.empty? } # => ["", [], {}] 
['foo', '', [], {}].reject { |i| i.empty? } # => ["foo"] 

oder unter Verwendung von Kurzschrift:

['foo', '', [], {}].select(&:empty?) # => ["", [], {}] 
['foo', '', [], {}].reject(&:empty?) # => ["foo"] 
+0

Verwendung leer? Dies führt zu einem Absturz, wenn das Array einen Nullwert enthält. – s1mpl3

+0

Das stimmt, aber das OP hat nur ein Problem für "leere" Knoten und nicht für "null" Knoten angegeben. –

0
arr = [ "0", "108", "", [], {}, nil, 2..1, 109, 3.2, :'' ] 

arr.select { |e| e.respond_to?(:empty?) && e.empty? } 
    #=> ["", [], {}, :""] 
Verwandte Themen