2013-04-17 4 views
2

나는 3 개의 개체 배열을 가지고 있습니다. 그들은 다음과 같이 :연결된 개체의 배열을 결합

  • $arr1, $arr2 : 개체 (ID, filename, size 등)과 같은 속성.
  • $arrlink : (file1ID, file2ID, 기타와 같은 속성을 가진 객체입니다. 이것은 위의 객체 중 2 개를 연결합니다.

내가해야하는 것은 그들을 CSV에 쓸 수 있도록 하나의 배열로 결합하는 것입니다. 3은 다른 두 배열의 및 File2IDID 열에 연결해야합니다. 내가 원하는 속성을 선택할 수 있어야합니다. 간단/더 직접적인 방법이 있다면 내가 통해 foreach는이 작업을 수행 할 수 있습니다 알고 있지만 궁금

newarray[0] = {"c:\filename1.txt", "c:\filename2.txt", "aaaa"} 

예를 들면 다음과 같습니다

$arr1[0] = {1,"c:\filename1.txt",1000....} 
$arr1[1] = {2,"c:\filename2.txt",2000....} 

$arrlink[0] = {1,2,"aaaa") 

원하는 결과입니다.

물론 각 배열에는 많은 항목이 있지만 모두 1 대 1 관계로 연결됩니다.

+0

배열을 객체와 함께 fileID를 키로 사용하여 해시 테이블로 변환하십시오. 그런 다음 링크 배열을 foreach하고 "링크 객체"에서 ID를 사용하여 해시 테이블에서 필요한 값을 추출합니다. –

답변

1

이걸 사용하여 감았습니다. 많은 타이핑을 절약 할 수 있으며, 링크 된 필드를 그대로두면 기본 객체를 수정할 때 수정할 필요가 없습니다.

$arrOutput = @() 

foreach($a in $arrMatch) 
    { 
    $objOut = New-Object PsObject 

    $a.psobject.properties | % { $objOut | Add-Member -MemberType $_.MemberType -Name $_.Name -Value $_.Value} 
    $arrS1[$a.file1].psobject.properties | % { $objOut | Add-Member -MemberType $_.MemberType -Name ($_.Name + "_1") -Value $_.Value} 
    $arrS2[$a.file2].psobject.properties | % { $objOut | Add-Member -MemberType $_.MemberType -Name ($_.Name + "_2") -Value $_.Value} 
    $arrOutput+= $objOut 
    } 
관련 문제