Search Array

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!