Forum: Ruby on Rails Merging array with same key - HELP

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
C9b09268e3cfcf33311cf0c85ba30ada?d=identicon&s=25 Shankar Ganesh (lookshankar)
on 2009-01-27 08:13
Hi ,
   I need to merge an array in ruby on rails.

   array1 =
['01/01/2009','01/01/2009','10/01/2009','01/01/2009','10/01/2009']
   array2 = ['1stjan1','1stjan2','10thjan1','1stjan3','10thjan2']

   I need to have array like this

   array3 =
['01/01/2009'=>'1stjan1-1stjan2-1stjan3','10/01/2009'=>'10thjan1-10thjan2']

  Thanks in Advance.
7e35ecb8cb04c4c15cf0ad1a0edf113d?d=identicon&s=25 anton effendi (Guest)
on 2009-01-27 09:47
(Received via mailing list)
Haii...
I will try help u.
array3 =
['01/01/2009'=>'1stjan1-stjan2-1stjan3','10/01/2009'=>'10thjan1-10thjan2']
-> *this is not array.. this is hash..*

The code is
array3 = {}
array1.each_with_index do |x, i|
  array3[x] = array2[i]
end


may be it can help u..
thank you..

fyi ==> array1.length == array2.length   --> this is rule for that
case....(
*MUST*)



On Tue, Jan 27, 2009 at 2:13 PM, Shankar Ganesh <
rails-mailing-list@andreas-s.net> wrote:

>   array3 =
> ['01/01/2009'=>'1stjan1-1stjan2-1stjan3','10/01/2009'=>'10thjan1-10thjan2']
>
>  Thanks in Advance.
> --
> Posted via http://www.ruby-forum.com/.
>
> >
>


--
Wu You Duan
C9b09268e3cfcf33311cf0c85ba30ada?d=identicon&s=25 Shankar Ganesh (lookshankar)
on 2009-01-27 09:56
hi,
 I'm getting value like {"1stjan1"=>"01/01/2009",
"10thjan1"=>"10/01/2009", "1stjan2"=>"01/01/2009",and so}
for the code

array3 = {}
array1.each_with_index do |x, i|
  array3[x] = array2[i]
end

I need to merge the value but the key(date) should be same.

Thanks.

anton effendi wrote:
> Haii...
> I will try help u.
> array3 =
> ['01/01/2009'=>'1stjan1-stjan2-1stjan3','10/01/2009'=>'10thjan1-10thjan2']
> -> *this is not array.. this is hash..*
>
> The code is
> array3 = {}
> array1.each_with_index do |x, i|
>   array3[x] = array2[i]
> end
>
>
> may be it can help u..
> thank you..
>
> fyi ==> array1.length == array2.length   --> this is rule for that
> case....(
> *MUST*)
>
>
>
> On Tue, Jan 27, 2009 at 2:13 PM, Shankar Ganesh <
> rails-mailing-list@andreas-s.net> wrote:
>
>>   array3 =
>> ['01/01/2009'=>'1stjan1-1stjan2-1stjan3','10/01/2009'=>'10thjan1-10thjan2']
>>
>>  Thanks in Advance.
>> --
>> Posted via http://www.ruby-forum.com/.
>>
>> >
>>
>
>
> --
> Wu You Duan
7e35ecb8cb04c4c15cf0ad1a0edf113d?d=identicon&s=25 anton effendi (Guest)
on 2009-01-27 13:52
(Received via mailing list)
make sure.....
array1 --> date
array2 --> the value...

or
array3 = {}
array1.each_with_index do |x, i|
 array3[x] = array2[i]
end

change to

array3 = {}
array2.each_with_index do |x, i|
 array3[x] = array1[i]
end

please try again

On Tue, Jan 27, 2009 at 3:56 PM, Shankar Ganesh <
rails-mailing-list@andreas-s.net> wrote:

> end
> ['01/01/2009'=>'1stjan1-stjan2-1stjan3','10/01/2009'=>'10thjan1-10thjan2']
> > thank you..
> >>   array3 =
> >
> > --
> > Wu You Duan
>
> --
> Posted via http://www.ruby-forum.com/.
>
> >
>


--
Wu You Duan
C9b09268e3cfcf33311cf0c85ba30ada?d=identicon&s=25 Shankar Ganesh (lookshankar)
on 2009-01-27 14:50
<%  array1
=['01/01/2009','01/01/2009','10/01/2009','01/01/2009','10/01/2009'] %>
<%array2 = ['1stjan1','1stjan2','10thjan1','1stjan3','10thjan2']%>
<%array3 = {} %>
<%array2.each_with_index do |x, i|%>
 <%array3[x] = array1[i]%>
<%end%>
<br>
<%=array3.inspect %>

I'm getting o/p like this


{"1stjan1"=>"01/01/2009", "10thjan1"=>"10/01/2009",
"1stjan2"=>"01/01/2009", "10thjan2"=>"10/01/2009",
"1stjan3"=>"01/01/2009"}




anton effendi wrote:
> make sure.....
> array1 --> date
> array2 --> the value...
>
> or
> array3 = {}
> array1.each_with_index do |x, i|
>  array3[x] = array2[i]
> end
>
> change to
>
> array3 = {}
> array2.each_with_index do |x, i|
>  array3[x] = array1[i]
> end
>
> please try again
>
> On Tue, Jan 27, 2009 at 3:56 PM, Shankar Ganesh <
> rails-mailing-list@andreas-s.net> wrote:
>
>> end
>> ['01/01/2009'=>'1stjan1-stjan2-1stjan3','10/01/2009'=>'10thjan1-10thjan2']
>> > thank you..
>> >>   array3 =
>> >
>> > --
>> > Wu You Duan
>>
>> --
>> Posted via http://www.ruby-forum.com/.
>>
>> >
>>
>
>
> --
> Wu You Duan
7e35ecb8cb04c4c15cf0ad1a0edf113d?d=identicon&s=25 anton effendi (Guest)
on 2009-01-27 16:17
(Received via mailing list)
send to me the file.. I will repair...

I think use:
 array3 = {}
  array1.each_with_index do |x, i|
  array3[x] = array2[i]
  end

On Tue, Jan 27, 2009 at 8:50 PM, Shankar Ganesh <
rails-mailing-list@andreas-s.net> wrote:

> <%=array3.inspect %>
>
> >
> > rails-mailing-list@andreas-s.net> wrote:
> >> --
> Posted via http://www.ruby-forum.com/.
>
> >
>


--
Wu You Duan
53be54e5db4dc58e4980db5a8255621b?d=identicon&s=25 Harold (Guest)
on 2009-01-27 18:42
(Received via mailing list)
Hi,

hash = {}
array1.uniq.each { |d| hash[d] = [] }
array1.each_with_index { |x,i| hash[x] << array2[i] }
hash.each_key { |key| hash[key] = hash[key].join('-') }
hash.inspect # => {"01/01/2009"=>"1stjan1-1stjan2-1stjan3",
"10/01/2009"=>"10thjan1-10thjan2"}

Enjoy,

-Harold
On Jan 27, 2:13 am, Shankar Ganesh <rails-mailing-l...@andreas-s.net>
53be54e5db4dc58e4980db5a8255621b?d=identicon&s=25 Harold (Guest)
on 2009-01-27 18:43
(Received via mailing list)
Hi,

hash = {}
array1.uniq.each { |d| hash[d] = [] }
array1.each_with_index { |x,i| hash[x] << array2[i] }
hash.each_key { |key| hash[key] = hash[key].join('-') }
hash.inspect # => {"01/01/2009"=>"1stjan1-1stjan2-1stjan3",
"10/01/2009"=>"10thjan1-10thjan2"}

Enjoy,

-Harold
On Jan 27, 2:13 am, Shankar Ganesh <rails-mailing-l...@andreas-s.net>
C9b09268e3cfcf33311cf0c85ba30ada?d=identicon&s=25 Shankar Ganesh (lookshankar)
on 2009-01-28 03:21
hi,
   Thank you DUDE it works !

Harold wrote:
> Hi,
>
> hash = {}
> array1.uniq.each { |d| hash[d] = [] }
> array1.each_with_index { |x,i| hash[x] << array2[i] }
> hash.each_key { |key| hash[key] = hash[key].join('-') }
> hash.inspect # => {"01/01/2009"=>"1stjan1-1stjan2-1stjan3",
> "10/01/2009"=>"10thjan1-10thjan2"}
>
> Enjoy,
>
> -Harold
> On Jan 27, 2:13�am, Shankar Ganesh <rails-mailing-l...@andreas-s.net>
C9b09268e3cfcf33311cf0c85ba30ada?d=identicon&s=25 Shankar Ganesh (lookshankar)
on 2009-01-28 03:26
Hi,

   I got a table like this
C9b09268e3cfcf33311cf0c85ba30ada?d=identicon&s=25 Shankar Ganesh (lookshankar)
on 2009-01-28 03:50
Hi,

I got a table like this

---------------------------------------------------------------
id | what   | when      | color  |   to      | description     |
---------------------------------------------------------------
1  | test   |01/01/2009 | red    |04/01/2009 | hi this is test |
---------------------------------------------------------------
2  | test2  |02/01/2009 | green  |04/01/2009 | hi this is test |
---------------------------------------------------------------
3  | test3  |01/01/2009 | blue   |04/01/2009 | hi this is test |
---------------------------------------------------------------
4  | test4  |02/01/2009 | orange |04/01/2009 | hi this is test |
---------------------------------------------------------------

I had fetch the value from the database in such a way like this

##############################
#[JavaScript source with ROR]#
##############################

var dAb = new Array();
var x = 0;
var event_task_today ='';
var event_task ='';

<% @eventall.each do |d| %>
 var DBdate1 = '<%= d.when%>';
 var eventdate1 = DBdate1.split('/');
 var task_date1 =eventdate1[2]+eventdate1[1]+eventdate1[0];
 dAb[x++] =  task_date1+" <div align='lef'
style='background:<%=d.color%>;color:white;'><%= d.what%></div>";
<% end %>

If I alert 'dAb'value I'm getting like this
     *****

20090101 <div align='left'
style='background:red;color:white;'>test</div>,20090102 <div
align='left' style='background:green;color:white;'>test2</div>,20090101
<div align='left'
style='background:blue;color:white;'>test3</div>,20090102 <div
align='left' style='background:orange;color:white;'>test4</div>

I need to have JavaScript variable 'dAb'like this
                          ********

20090101 <div align='left'
style='background:red;color:white;'>test</div><BR><div align='left'
style='background:blue;color:white;'>test3</div>,20090102 <div
align='left' style='background:green;color:white;'>test2</div><BR><div
align='left' style='background:orange;color:white;'>test4</div>

<BR> tag should be placed in between the values with same date ,date
should be printed only once.

PLEASE ADVICE.

Thanks in advance.
3131fcea0a711e5ad89c8d49cc9253b4?d=identicon&s=25 Julian Leviston (Guest)
on 2009-01-28 08:13
(Received via mailing list)
Which record do you want to include for the repeated dates? the first,
or last?

Julian

http://sensei.zenunit.com/
http://random8.zenunit.com/
C9b09268e3cfcf33311cf0c85ba30ada?d=identicon&s=25 Shankar Ganesh (lookshankar)
on 2009-01-28 08:19
all the records should be included.


Julian Leviston wrote:
> Which record do you want to include for the repeated dates? the first,
> or last?
>
> Julian
>
> http://sensei.zenunit.com/
> http://random8.zenunit.com/
This topic is locked and can not be replied to.