Sorting through an array of an array

D

Dominic Son

Hello.

Each of my arrays look like this:
container[0] = ["foo", "bar", "baz"]
container[1] = ["doo", "poo", "woo"]

i'd like to sort by the second position (bar, and poo)
and of course,affecting the whole row, so that "bar" should be on top,
along with "foo" and "baz" as container[0].

What method should i use?

Thanks
 
E

E. Mark Ping

Hello.

Each of my arrays look like this:
container[0] = ["foo", "bar", "baz"]
container[1] = ["doo", "poo", "woo"]

i'd like to sort by the second position (bar, and poo)
and of course,affecting the whole row, so that "bar" should be on top,
along with "foo" and "baz" as container[0].

What method should i use?

container.sort { |x,y| x[1]<=>y[1] }
 
B

Brian Mitchell

Hello.

Each of my arrays look like this:
container[0] = ["foo", "bar", "baz"]
container[1] = ["doo", "poo", "woo"]

i'd like to sort by the second position (bar, and poo)
and of course,affecting the whole row, so that "bar" should be on top,
along with "foo" and "baz" as container[0].

What method should i use?

Actually, the better way to sort in this scenario is to use sort_by.

container.sort_by {|x| x[1]}

No need to mess with the <=> operator by hand.

Brian.
 
D

Dominic Son

But how to do apply this to having 3 elements in the value of an array?

container.sort_by { |x,y,z| *lost here*
puts x <br>
puts y <br>
puts z <br>
}

Brian said:
What method should i use?
Actually, the better way to sort in this scenario is to use sort_by.

container.sort_by {|x| x[1]}

No need to mess with the <=> operator by hand.

Brian.
 
W

Wilson Bilkovich

But how to do apply this to having 3 elements in the value of an array?

container.sort_by { |x,y,z| *lost here*
puts x <br>
puts y <br>
puts z <br>
}

Having more entries in the array doesn't change the number of
arguments to the block.

a = []
a << [1,2,3]
a << [4,5,6]
a << [7,8,9]

a.sort_by do |element|
[element[0], element[1], element[2]]
end

If you return an Array from sort_by's block, it will sort on the
entries of the array in order.

In this trivial case, since you're sorting by all three, you could
just write the above as:
a.sort_by {|e| e}
(since 'e' is already an Array in the proper order)
 
X

x1

container.sort_by {|x| x[2]}

But how to do apply this to having 3 elements in the value of an array?

container.sort_by { |x,y,z| *lost here*
puts x <br>
puts y <br>
puts z <br>
}

Brian said:
What method should i use?
Actually, the better way to sort in this scenario is to use sort_by.

container.sort_by {|x| x[1]}

No need to mess with the <=> operator by hand.

Brian.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,009
Latest member
GidgetGamb

Latest Threads

Top