Olyan módszert keresek, amely észleli, hogy a következő érték egy tömbben ismétlődő-e, és ha igen, törli. Működnie kell karakterláncok és egész számok esetén is.
Például adott a tömbnek:
arr = ["A", "B", "B", "C", "c", "A", "D", "D"]
Visszatérés:
arr = ["A", "B", "C", "c", "A", "D"]
Megpróbáltam létrehozni egy üres a
tömböt, és belelapátolni az értékeket, feltéve, hogy a következő érték nem egyenlő az aktuális értékkel. Én így próbáltam:
arr.each do |x|
following_value = arr.index(x) + 1
a << x unless x == arr[following_value]
end
Sajnos ahelyett, hogy az egyik ismétlődő értéket belapátolta volna a tömbbe, egyiket sem lapátolta be.
arr = ["A", "C", "c", "A"]
Tud valaki segíteni? Bónuszpontok, ha elmondod, hogy pontosan mi rontott el a módszeremmel.
Kösz!
with_index
-ről. Nem akarok ostobának tűnni, de még mindig nem vagyok 100%-ig biztos benne, hogy a példám miért nem működött. Azt hittem, hogy megtörténik: A != B, tehát lapát a-ba; B == B, tehát ne lapátoljon a-ba; B != C, tehát lapáttal a. Érted, mire gondolok? És még egyszer köszönöm, az összes példád rendkívül hasznos. :) 28.06.2017Array#reject!
, amely támpontot ad ahhoz, hogy a kezdeti metódus hogyan módosítható aarr
mutációjának elkerülése érdekében. :-) 29.06.2017