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.

···

--
Posted via http://www.ruby-forum.com/.

time.find{|x| x[0]=="valuea"}

···

On Jul 18, 12:13 am, Chad Weier <emily.war...@gmail.com> wrote:

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.
--
Posted viahttp://www.ruby-forum.com/.

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,

···

--
JJ Fleck
PCSI1 Lycée Kléber

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.

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:

time = CSV.parse(File.read('time.csv'))

=> [["valuea", "a", "100"], ["valueb", "b", "200"], ["valuec", "c", "300"]]

time.assoc('valuea')

=> ["valuea", "a", "100"]

-Rob

Rob Biedenharn
Rob@AgileConsultingLLC.com http://AgileConsultingLLC.com/
rab@GaslightSoftware.com http://GaslightSoftware.com/

···

On Jul 18, 2010, at 1:13 AM, Chad Weier wrote:

Thank you so much. Very helpful I've got the program working!

···

--
Posted via http://www.ruby-forum.com/.