[ruby] Ruby에서 다른 배열에 배열을 어떻게 추가하고 다차원 결과로 끝나지 않습니까?

somearray = ["some", "thing"]

anotherarray = ["another", "thing"]

somearray.push(anotherarray.flatten!)

기대했다

["some","thing","another","thing"]



답변

당신은 실행 가능한 아이디어를 가지고 있지만,이 #flatten!잘못된 위치에 – 당신은 설정하는 데 사용할 수 있도록 그것은 수신기를 평평 [1, 2, ['foo', 'bar']][1,2,'foo','bar'].

의심 할 여지없이 일부 접근 방식을 잊어 버릴 수 있지만 연결할 수는 있습니다 .

a1.concat a2
a1 + a2              # creates a new array, as does a1 += a2

또는 추가 / 추가 :

a1.push(*a2)         # note the asterisk
a2.unshift(*a1)      # note the asterisk, and that a2 is the receiver

또는 스플 라이스 :

a1[a1.length, 0] = a2
a1[a1.length..0] = a2
a1.insert(a1.length, *a2)

또는 추가하고 평평 :

(a1 << a2).flatten!  # a call to #flatten instead would return a new array


답변

당신은 +연산자를 사용할 수 있습니다 !

irb(main):001:0> a = [1,2]
=> [1, 2]
irb(main):002:0> b = [3,4]
=> [3, 4]
irb(main):003:0> a + b
=> [1, 2, 3, 4]

http://ruby-doc.org/core/classes/Array.html : 배열 클래스에 대한 모든 것을 읽을 수
있습니다


답변

가장 깨끗한 방법은 Array # concat 메서드 를 사용하는 것입니다. 동일한 배열을 수행하지만 새 배열을 만드는 Array # +와 달리 새 배열을 만들지 않습니다.

문서에서 바로 ( http://www.ruby-doc.org/core-1.9.3/Array.html#method-i-concat ) :

concat (other_ary)

other_ary의 요소를 self에 추가합니다.

그래서

[1,2].concat([3,4])  #=> [1,2,3,4]  

Array # concat 은 다차원 배열을 인수로 전달하면 평탄화하지 않습니다. 별도로 처리해야합니다.

arr= [3,[4,5]]
arr= arr.flatten   #=> [3,4,5]
[1,2].concat(arr)  #=> [1,2,3,4,5]

마지막으로, corelib gem ( https://github.com/corlewsolutions/corelib )을 사용하면 Ruby 핵심 클래스에 유용한 도우미를 추가 할 수 있습니다. 특히 concat을 실행하기 전에 다차원 배열을 자동으로 병합 하는 Array # add_all 메소드가 있습니다.


답변

Ruby 버전> = 2.0에서 작동하지만 이전 버전에서는 작동하지 않는 쉬운 방법 :

irb(main):001:0> a=[1,2]
=> [1, 2]
irb(main):003:0> b=[3,4]
=> [3, 4]
irb(main):002:0> c=[5,6]
=> [5, 6]
irb(main):004:0> [*a,*b,*c]
=> [1, 2, 3, 4, 5, 6]


답변

이것을 시도하십시오, 그것은 중복을 제거하는 배열을 결합합니다

array1 = ["foo", "bar"]
array2 = ["foo1", "bar1"]

array3 = array1|array2

http://www.ruby-doc.org/core/classes/Array.html

추가 문서는 “Set Union”을 참조하십시오.


답변

두 가지 방법이 있습니다.이 경우 첫 번째 방법은 새 배열을 할당합니다 (somearray = somearray + anotherarray로 변환 됨)

somearray = ["some", "thing"]

anotherarray = ["another", "thing"]

somearray += anotherarray # => ["some", "thing", "another", "thing"]

somearray = ["some", "thing"]
somearray.concat anotherarray # => ["some", "thing", "another", "thing"]


답변

a = ["some", "thing"]
b = ["another", "thing"]

추가하기 ba하고에 결과를 저장 a:

a.push(*b)

또는

a += b

두 경우 모두 다음과 a같습니다.

["some", "thing", "another", "thing"]

전자의 경우 b기존 a배열에 요소 가 추가되고 후자의 경우 두 배열이 함께 연결되어 결과가에 저장됩니다 a.