I have an array which is created by reading a csv file
time = CSV.parse(File.read(‘time.csv’))
time.csv contains
valuea,a,100
valueb,b,200
valuec,c,300
I want to be able to find a particular value but I used
time.index ‘valuea’ and nothing displays.
I am pretty sure it is because its an array of arrays
eg if i go puts time[0][0] it will display valuea
The 2 dimensional array is what I need but I am not sure how to search
it.
Please help as I am very new at ruby.
On Jul 18, 12:13 am, Chad W. [email protected] wrote:
I want to be able to find a particular value but I used
time.index ‘valuea’ and nothing displays.
I am pretty sure it is because its an array of arrays
eg if i go puts time[0][0] it will display valuea
The 2 dimensional array is what I need but I am not sure how to search
it.
Please help as I am very new at ruby.
Posted viahttp://www.ruby-forum.com/.
time.find{|x| x[0]==“valuea”}
Hello Chad,
The 2 dimensional array is what I need but I am not sure how to search
it.
If you want to get the index couple, you could do something like this:
def index_biarray(biarray,obj)
index1 = biarray.index {|a| a.include?(obj)}
index2 = biarray[index1].index(obj)
return index1,index2
end
and to check the behavior:
time = [[“valuea”,“a”,100],[“valueb”,“b”,200],[“valuec”,“c”,300]]
puts index_biarray(time,“valuea”).join(’,’)
puts index_biarray(time,200).join(’,’)
puts index_biarray(time,‘c’).join(’,’)
Cheers,
On Jul 18, 2010, at 1:13 AM, Chad W. wrote:
I want to be able to find a particular value but I used
time.index ‘valuea’ and nothing displays.
I am pretty sure it is because its an array of arrays
eg if i go puts time[0][0] it will display valuea
The 2 dimensional array is what I need but I am not sure how to search
it.
Please help as I am very new at ruby.
There’s a particular method that applies in cases like this. You have
an array of arrays and you want to find the first array having a given
object as its first value. This is called an “association list” and
you can get the array you want with:
irb> time = CSV.parse(File.read(‘time.csv’))
=> [[“valuea”, “a”, “100”], [“valueb”, “b”, “200”], [“valuec”, “c”,
“300”]]
irb> time.assoc(‘valuea’)
=> [“valuea”, “a”, “100”]
-Rob
Rob B.
[email protected] http://AgileConsultingLLC.com/
[email protected] http://GaslightSoftware.com/
Thank you so much. Very helpful I’ve got the program working!