2016-04-14 18 views
0

Dizimden bir değere (yalnızca bir) elemanı kaldırmak istiyorum.ruby ​​Diziden bir öğeyi kaldırın

örnek:

x = [1,2,3,2] 
x.remove(2) 


result: x= [1,3] 

Ama ben [1,3,2] almak istiyorum.

sayesinde

+1

yazma? – 7urkm3n

+0

belirli bir sayı – ayoubben

+1

'.delete_at (dizi dizini)' için kullanabilirsiniz, ya da bunu yapmak için [1,2,3,4,1] 'den [,, 3,4] '. sadece x.uniq'i ara. – 7urkm3n

cevap

2

(delete_at sadece indeksi sağlayan önce de belirtildiği gibi, ya) x.slice!(x.index(2), 1): Sen sadece yapmak zorunda Senin durumunda index(element)

kullanarak silmek istediğiniz öğenin 1 indeksini alabilirsiniz yorum olarak bahsedilen, önce bir oluşumu

x.delete_at(x.index 2) 

> x = [1,2,3,2] 
=> [1, 2, 3, 2] 
> x.delete_at(x.index 2) 
=> 2 
> x 
=> [1, 3, 2] 
+0

'x.index (2) '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' catch') kullanımı zordu))) – 7urkm3n

+0

dilim! ... aynı olmalılar. – stecb

+0

Teşekkürler, işe yarıyor – ayoubben

0

Sen slice!(index, 1) kullanabilirsiniz. @ 7urkm3n gibi

+0

işe yarıyor, teşekkürler – ayoubben

0

sen ebil istemek silmek için x.delete_at kullanabilirsiniz Bunun cevabım here tanımladığınız olarak Array#difference olduğu

x = [1,2,3,2] 
x.difference([2]) 
    #=> [1, 3, 2] 

yazma d. Yöntemin geniş potansiyel uygulaması nedeniyle proposed Ben Ruby çekirdeğine eklenir.

x = [1,2,3,2,1,2,4,2] 

varsayalım

ve ilk 1, ilk iki 2 's ve 4 kaldırmak istedi.

x.difference([1,2,2,4,4,5]) 
    #=> [3, 1, 2, 2] 

aynı sonucu verir sen

x.difference([1,2,2,4]) 
    #=> [3, 1, 2, 2] 

Not yazardı Bunu yapmak için.

son 1, son iki 2 s kaldırmak için ve ve u belirli sayıda veya dizinin ilk numarasını kaldırmak için 1` istiyorsun `çağırdığınızda 4,

x.reverse.difference([1,2,2,4]).reverse 
    #=> [1, 2, 3, 2] 
İlgili konular