2011-08-03 7 views
2

데이터베이스에서 데이터를 추출하여 두 개의 배열에 저장하는 중 하나의 배열에는 데이터의 레이블이 포함되어 있고 다른 배열에는 데이터가 들어 있습니다. 내가 각 데이터 집합에 대해 하나의 레이블을 갖도록 배열을 조작해야합니다.다른 배열의 병렬 값을 기반으로 한 배열의 데이터를 그룹화하려면 어떻게해야합니까?

배열 지금

레이블 - [Development, Development, Development, Development, Release, Release, Release, Release, ...]

데이터 - [DevData1, DevData2, DevData3, DevData4, RelData1, RelData2, RelData3, RelData4, ...]

난 단지 데이터 세트 당 라벨을 필요,하지만 난에 해당하는 세그먼트로 데이터를 파괴 할 단일 레이블. 지난 4 개월 동안의 데이터이기 때문에 4 개의 라벨/데이터 쌍이 있습니다. 나는 매 4 번째 요소마다 배열을 분할 하겠지만, 몇 개월 동안 엔트리가 없다. 그래서 데이터를 분할하는 더 좋은 방법이 필요합니다.

모든 아이디어가 우수 할 것입니다. 감사합니다. .

+0

이 두 배열의 위치를 ​​수행 항상 서로 일치? 마찬가지로'0'은 항상 ether'Development'와'DevXXX'가 될 것인가, 아니면 두 배열에 섞여있을 수 있습니까? –

+0

예, 각 레이블에는 다른 배열에 해당 데이터 요소가 있습니다. –

답변

4

당신은 너무 많은 노력없이 해시에 별도의 배열을 결합 할 수 있습니다 :

a = [:Development, :Development, :Development, :Development, :Release, :Release, :Release, :Release] 
b = [:DevData1, :DevData2, :DevData3, :DevData4, :RelData1, :RelData2, :RelData3, :RelData4] 
h = Hash.new { |h, k| h[k] = [ ] } 
a.each_with_index { |e, i| h[e].push(b[i]) } 
# h is now {:Development=>[:DevData1, :DevData2, :DevData3, :DevData4], :Release=>[:RelData1, :RelData2, :RelData3, :RelData4]} 

그냥 당신이 Hash.new { |h,k| h[k] = [ ] } 사용할 수 있는지 확인하지 Hash.new([]) 또는 두 개의 해시 항목이 같은 배열을 가리키는하게 될 겁니다 및 그것은 단지 사물의 엉망을 만들 것입니다.

참고 :

+0

나는 이것을 줄 것입니다. 고맙습니다. –

+0

이것은 훌륭했습니다. 감사! –

+0

@Hunter : [Array] (http://www.ruby-doc.org/core/classes/Array.html), [Enumerable] (http : //www.ruby-doc. org/core/classes/Enumerable.html), [Hash] (http://www.ruby-doc.org/core/classes/Hash.html)를 참조하십시오. 거기에 모든 종류의 유용한 것들이 있습니다. –

1

해시로 저장하지 않는 이유는 무엇입니까? 반복자로 배열 모두를 통해 단지 루프 이것에

h["Development"] 
# => [DevData1, DevData2...] 
+0

데이터가 이미 XML 파일에서 배열로 읽혀지고 있습니다. 두 배열은 모두 함께 사용해야합니다. 데이터 저장 방법을 변경할 수 없습니다. –

1

매우 루비하지 솔루션이 될 것입니다 그리고 당신로 사용 :

h = {"Development" => [DevData1, DevData2...], "Release" => [RelData1...]} 

그럼 당신은 이런 식으로 "개발"데이터에 액세스 할 수 있습니다 그것들이 필요하다.

+1

자바에서 오는, 이것은 나의 첫 번째 생각이었다. 그리고 솔루션을 타이핑 할 때 Ruby가 아닌 멍청이 때문에 멈 췄습니다. –

관련 문제