2013-06-24 2 views
2

을 평평하게하는? 나는 그것이 평평한 것을 보았습니다. 그것은 바깥 쪽에서부터, 안으로부터 안쪽에서 일하는 것처럼 보입니다.어떻게이 배열을 안쪽 배열

+1

시도 배열을 두 번째 형식이 아닌 첫 번째 형식으로 가져옵니다. 첫 번째 형식으로 데이터를 볼 때 일반적으로 잘못된 것이므로 코드를 다시 생각해야하기 때문입니다. –

+0

@ theTinMan, 좋은 지적. 제품 호출의 결과로 해당 형식의 데이터가 나타납니다. 호출 구문을 게시하여 생성 방법을 보여줍니다. –

+0

그게 효과가있다. 실제 문제에 약간의 리팩터링이 필요한 경우 또는 다른 많은 코드를 수정하는 다른 접근 방식이 필요할 때 누군가가 붕대를 찾는 것처럼 증상을 다루는 경우가 종종 있습니다. –

답변

4

또는 당신은 당신이있는 이유를 조사 할 수 있습니다 arr.each {|i| i.flatten!}

+0

파괴 버전인지 비파괴 버전인지에 따라 다릅니다. OMG의 대답은 비파괴적인 것입니다. –

+2

@JanDvorak 네,하지만 op는 "나는 이것을 이걸로 바꾸고 싶습니다."라고 말했기 때문에 원래는 필요하지 않을 것이라고 생각합니다. – leonhart

+0

고마워, 나는이 원본을 필요로하지 않기 때문에 하나를 선택했다. 나는 두 답을 모두 반으로 줄 수 있었으면 좋겠다. 모두에게 감사드립니다. –

9

당신은 사용할 수 flattenmap :

ar.map! {|i| i.flatten} 
# => [["a", "c", "e"], 
#  ["a", "c", "f"], 
#  ["a", "c", "g"], 
#  ["a", "d", "e"], 
#  ["a", "d", "f"], 
#  ["a", "d", "g"], 
#  ["b", "c", "e"], 
#  ["b", "c", "f"], 
#  ["b", "c", "g"], 
#  ["b", "d", "e"], 
#  ["b", "d", "f"], 
#  ["b", "d", "g"]] 

또 다른 한 줄은 다음과 같습니다

ar.map!(&:flatten) 

# => [["a", "c", "e"], 
#  ["a", "c", "f"], 
#  ["a", "c", "g"], 
#  ["a", "d", "e"], 
#  ["a", "d", "f"], 
#  ["a", "d", "g"], 
#  ["b", "c", "e"], 
#  ["b", "c", "f"], 
#  ["b", "c", "g"], 
#  ["b", "d", "e"], 
#  ["b", "d", "f"], 
#  ["b", "d", "g"]] 
+1

참고'& : flatten'은 최소한 Ruby 1.9.3 또는 유사한 버전이 필요합니다. –

+0

@JanDvorak 내가 게시물에 언급해야하는 이유는 그것이 두 가지 형식의 답을 제공 한 이유입니다. –

+1

답변에 버전 정보를 추가하는 것이 좋습니다. "1.x.x 이후로 \ n ... 할 수도 있습니다." –

관련 문제