From: Chad Weier on
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/.

From: w_a_x_man on
On Jul 18, 12:13 am, Chad Weier <emily.war...(a)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/.

time.find{|x| x[0]=="valuea"}
From: Jean-Julien Fleck on
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

From: Rob Biedenharn on
On Jul 18, 2010, at 1:13 AM, Chad Weier 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.

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 Biedenharn
Rob(a)AgileConsultingLLC.com http://AgileConsultingLLC.com/
rab(a)GaslightSoftware.com http://GaslightSoftware.com/


From: Chad Weier on
Thank you so much. Very helpful I've got the program working!
--
Posted via http://www.ruby-forum.com/.

 | 
Pages: 1
Prev: ruby abstraction
Next: Ruby Shoes: Self-contained?