[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

sorting by timestamp with uneven arrays

Mike Dershowitz

12/8/2007 10:04:00 PM

Ok, this one is a little complicated and I'm sure there's a better way
to do it. Here's what I'm doing:

For presentation purposes, I have an array of arrays. Here's the
structure of the array:

[
"indicator (string that I set" ,
<model object from db, different models> ,
timestamp
]

I'm creating and inserting the timestamp myself, as each model object
has a form of timestamp, whether or not it's called that.

I'm doing it this way becuase I use a model method to get all of this
data, and the thing I want to do last is to sort by "timestamp".

array.sort_by won't work becuase it's not a hash (although i tried
adding a hash and then sorting by that hash, but that didn't work either
(got a nomethod error).

How can I make it so that I can sort this array?

Thanks so much in advance!

Mike
--
Posted via http://www.ruby-....

4 Answers

Chris Shea

12/8/2007 10:45:00 PM

0

On Dec 8, 3:03 pm, Mike Dershowitz <michael.dershow...@jpmchase.com>
wrote:
> Ok, this one is a little complicated and I'm sure there's a better way
> to do it. Here's what I'm doing:
>
> For presentation purposes, I have an array of arrays. Here's the
> structure of the array:
>
> [
> "indicator (string that I set" ,
> <model object from db, different models> ,
> timestamp
> ]
>
> I'm creating and inserting the timestamp myself, as each model object
> has a form of timestamp, whether or not it's called that.
>
> I'm doing it this way becuase I use a model method to get all of this
> data, and the thing I want to do last is to sort by "timestamp".
>
> array.sort_by won't work becuase it's not a hash (although i tried
> adding a hash and then sorting by that hash, but that didn't work either
> (got a nomethod error).
>
> How can I make it so that I can sort this array?
>
> Thanks so much in advance!
>
> Mike
> --
> Posted viahttp://www.ruby-....

You have an array of arrays, each of which has as its last element a
timestamp? You should just be able to do this: array.sort_by{|e|
e.last}

Or did I read this wrong?

Chris

David A. Black

12/8/2007 10:52:00 PM

0

Hi --

On Sun, 9 Dec 2007, Mike Dershowitz wrote:

> Ok, this one is a little complicated and I'm sure there's a better way
> to do it. Here's what I'm doing:
>
> For presentation purposes, I have an array of arrays. Here's the
> structure of the array:
>
> [
> "indicator (string that I set" ,
> <model object from db, different models> ,
> timestamp
> ]
>
> I'm creating and inserting the timestamp myself, as each model object
> has a form of timestamp, whether or not it's called that.
>
> I'm doing it this way becuase I use a model method to get all of this
> data, and the thing I want to do last is to sort by "timestamp".
>
> array.sort_by won't work becuase it's not a hash (although i tried
> adding a hash and then sorting by that hash, but that didn't work either
> (got a nomethod error).
>
> How can I make it so that I can sort this array?
>
> Thanks so much in advance!

I'm not sure what you mean about #sort_by and being a hash. You can
use it on arrays.

Can you do this:

array_of_arrays.sort_by {|array| array[-1] }

assuming timestamp is always the last thing in the array?


David

--
Training for 2008!
Ruby on Rails training by David A. Black/Ruby Power and Light, LLC:
* Intro to Rails, New York, NY, February 4-7 2008
* Advancing With Rails, New York, NY, February 11-14 2008
Hosted by Exceed Education. See http://www.r... for details!

Gary Wright

12/8/2007 11:11:00 PM

0


On Dec 8, 2007, at 5:03 PM, Mike Dershowitz wrote:
> array.sort_by won't work becuase it's not a hash (although i tried
> adding a hash and then sorting by that hash, but that didn't work
> either
> (got a nomethod error).
>
>

I'm not sure why you are looking for a hash.

data = [
[ "model1", "instance of 1", Time.now],
[ "model2", "instance of 2", Time.now - 100]
]

p data.sort_by { |x| x[2] } # => [["model2", "instance of 2", Sat
Dec 08 17:15:41 -0500 2007], ["model1", "instance of 1", Sat Dec 08
17:17:21 -0500 2007]]


Gary Wright



Mike Dershowitz

12/9/2007 7:32:00 PM

0

thanks everybody, it worked!
--
Posted via http://www.ruby-....