Есть ли ярлык для объединения отдельных элементов двух одинаковых по размеру массивов строк? - PullRequest
0 голосов
/ 26 марта 2012

У меня есть два массива массива строк

[["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"]]

Я могу сделать это вручную с циклом и добавлением элементов, но мне было интересно, если кто-нибудь знал, существует ли более разумный способ.

РЕДАКТИРОВАТЬ: Вот результат, который я хочу решить любую путаницу

[
 "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"
]

Вот что я делаю сейчас

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

Ответы [ 2 ]

1 голос
/ 26 марта 2012

flatten и zip, затем map a 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"]
1 голос
/ 26 марта 2012

Это решение поддерживает массив в массиве (Arr1 будет изменен!)

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
}

С помощью arr1.flatten! вы можете сделать «обычный» массив из вашего массива массива.

Вы также можете сделать flatten перед тем, как «запал»:

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]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...