2012-03-25 3 views
0

Ich habe zwei Array von Array von String-Gibt es eine Verknüpfung, um einzelne Elemente von zwei gleich großen Array eines Array von Strings zu fusionieren?

[["1,'Tambaú','Praça Santo António','Tambaú','12x0',2,'I','EM',12,6,5934,50"], 
["2,'Beira Rio','Av. Bei ra Rio, Prox. Av Odilon Coutinho','Beira Rio','12x0',2,'I','EM',12,0,7249,0"], 
["3,'Cabo Branco','Cabo Bra nco, Prox. Rua Alice de Almeida','Cabo Branco','12x0',2,'I','EO',12,0,4751,0"], 
["901,'teste','teste','test e','Mini-estação de demonstração',1,'I','EO',2,1,97,50"] 
] 

[["-7.1105596,-34.824085"], 
["-7.1243144,-34.823312"], 
["-7.1395805,-34.816446"], 
["-7.1008926,-35.068359"]] 

ich ihm die manuellen Art und Weise mit Looping und Hinzufügen von Elementen tun, aber ich frage mich, ob jemand, wenn eine intelligentere Art und Weise existiert kannte.

EDIT: Hier ist das Ergebnis, das ich keine Verwirrung in Array

[ 
"1,'Tambaú','Praça Santo António','Tambaú','12x0',2,'I','EM',12,6,5934,50,-7.1105596,-34.824085", 
"2,' Beira Rio','Av. Beira Rio, Prox. Av Odilon Coutinho','Beira Rio','12x0',2,'I','EM',12,0,7249,0,-7.1243144, -34.823312", 
"3,'Cabo Branco','Cabo Branco, Prox. Rua Alice de Almeida','Cabo Branco','12x0',2,'I','EO',12, 0,4751,0,-7.1395805,-34.816446", 
"901,'teste','teste','teste','Mini-estação de demonstração',1,'I','EO' ,2,1,97,50,-7.1008926,-35.068359" 
] 

Hier ist, was ich tue jetzt

for i in 0...arr1.size 
    newArr[i] = (arr1[i][0] + "," + arr2[i][0]) 
end 
+0

Was meinst du mit "Sicherung"? Was ist Ihre erwartete Leistung? –

+0

Warum brauchen Sie das Array in Array? Um die Daten darzustellen, die Sie in Ihrem Beispiel zeigen, würde ein Array von Strings ausreichen. Mit 'Array # flatten 'können Sie ein solches Array erstellen. Wenn du _fuse_ schreibst - was sollte das Ergebnis sein? verketten Sie die Zeichenfolge von Array 1 mit der Zeichenfolge von Array 2? Oder möchten Sie ein Array von zwei Strings? – knut

+0

In jedem Fall sind 'Array # flatten' und' Array # zip' wahrscheinlich deine Freunde. –

Antwort

1

flatten und zip, dann map einem join:

arr1 = [ 
    ["1,'Tambaú','Praça Santo António','Tambaú','12x0',2,'I','EM',12,6,5934,50"], 
    ["2,'Beira Rio','Av. Bei ra Rio, Prox. Av Odilon Coutinho','Beira Rio','12x0',2,'I','EM',12,0,7249,0"], 
    ["3,'Cabo Branco','Cabo Bra nco, Prox. Rua Alice de Almeida','Cabo Branco','12x0',2,'I','EO',12,0,4751,0"], 
    ["901,'teste','teste','test e','Mini-estação de demonstração',1,'I','EO',2,1,97,50"] 
] 

arr2 = [ 
    ["-7.1105596,-34.824085"], 
    ["-7.1243144,-34.823312"], 
    ["-7.1395805,-34.816446"], 
    ["-7.1008926,-35.068359"] 
] 

arr1.flatten.zip(arr2.flatten).map { |pair| pair.join(',') } 
#=> ["1,'Tamba','Praa Santo Antnio','Tamba','12x0',2,'I','EM',12,6,5934,50,-7.1105596,-34.824085"], 
# "2,'Beira Rio','Av. Bei ra Rio, Prox. Av Odilon Coutinho','Beira Rio','12x0',2,'I','EM',12,0,7249,0,-7.1243144,-34.823312", 
# "3,'Cabo Branco','Cabo Bra nco, Prox. Rua Alice de Almeida','Cabo Branco','12x0',2,'I','EO',12,0,4751,0,-7.1395805,-34.816446", 
# "901,'teste','teste','test e','Mini-estao de demonstrao',1,'I','EO',2,1,97,50,-7.1008926,-35.068359"] 
+0

Danke! Diese Kartenfunktion ist neu für mich. – devcoder

1

Diese Lösung hält das Array lösen wollen (Arr1 werden geändert!

)
arr1 = [ 
    ["1,'Tambaú','Praça Santo António','Tambaú','12x0',2,'I','EM',12,6,5934,50"], 
    ["2,'Beira Rio','Av. Bei ra Rio, Prox. Av Odilon Coutinho','Beira Rio','12x0',2,'I','EM',12,0,7249,0"], 
    ["3,'Cabo Branco','Cabo Bra nco, Prox. Rua Alice de Almeida','Cabo Branco','12x0',2,'I','EO',12,0,4751,0"], 
    ["901,'teste','teste','test e','Mini-estação de demonstração',1,'I','EO',2,1,97,50"] 
] 

arr2 = [["-7.1105596,-34.824085"], ["-7.1243144,-34.823312"], ["-7.1395805,-34.816446"], ["-7.1008926,-35.068359"]] 


arr1.each_with_index{|el,i| 
    el.first << ',' 
    el.first << arr2[i].first 
} 

Mit arr1.flatten! können Sie ein 'normales' Array machen aus Ihrem Array von Array.

Sie können auch nicht die flatten, bevor Sie 'Sicherung':

arr1 = [ 
    ["1,'Tambaú','Praça Santo António','Tambaú','12x0',2,'I','EM',12,6,5934,50"], 
    ["2,'Beira Rio','Av. Bei ra Rio, Prox. Av Odilon Coutinho','Beira Rio','12x0',2,'I','EM',12,0,7249,0"], 
    ["3,'Cabo Branco','Cabo Bra nco, Prox. Rua Alice de Almeida','Cabo Branco','12x0',2,'I','EO',12,0,4751,0"], 
    ["901,'teste','teste','test e','Mini-estação de demonstração',1,'I','EO',2,1,97,50"] 
] 
arr1.flatten! 

arr2 = [["-7.1105596,-34.824085"], ["-7.1243144,-34.823312"], ["-7.1395805,-34.816446"], ["-7.1008926,-35.068359"]] 
arr2.flatten! 

arr1.each_with_index{|el,i| 
    el << ',' 
    el << arr2[i] 
} 
+0

Ahhhh Großbuchstaben Variablennamen und Multiline '{}'! Whyyyyyy? –

+0

Großgeschriebene Variablennamen machen es zu einer Konstante. –

+0

Entschuldigung, ich habe aus einer bestehenden Lösung kopiert und habe mir die Namen nicht angesehen - es ist spät in der Nacht für mich;) Ich habe das Beispiel modifiziert. – knut

Verwandte Themen