次のデータセット[ハッシュの配列]があります。
ID
と仮定する常にユニークです
$dataset = @(
@{
ID = "1234567891"
Code = "ABC1111"
},
@{
ID = "1234567892"
Code = "ABC1111"
},
@{
ID = "1234567893"
Code = "ABC1112"
},
@{
ID = "1234567894"
Code = "ABC1113"
},
@{
ID = "1234567895"
Code = "ABC1114"
},
@{
ID = "1234567896"
Code = "ABC1111"
}
)
私がやろうとしているのは、次のデータセットを
Code
でグループ化することですキー。
私はすでに
Group-By
をパイピングするなどの複数の方法を試しました
、
Group-Object
、
Sort-Object
しかし、私はまだ私が望む結果を得ていません。
私が返すことを期待している結果は、次のようなハッシュテーブルです[または同様のもの]:
$groupedDataset = @{
ABC1111 = @("1234567891","1234567892","1234567896")
ABC1112 = @("1234567893")
ABC1113 = @("1234567894")
ABC1114 = @("1234567895")
}
回答 2 件
ベーコンビットの有用な答えを補完するには:
厳密に提供する必要はありませんカスタムオブジェクト
Group-Object
への入力として ;[hashtable]
インスタンスを使用する限り、そのまま使用できますスクリプトブロック引数 グループ化するエントリにアクセスするには(PSv3 +構文):$ht = @{} $dataset | Group-Object { $_.Code } | ForEach-Object { $ht[$_.Name] = $_.Group.Id }
{ $_.Code }
の使用に注意してください[-Property] Code
の代わりに ;後者は善意でのみ動作しますプロパティ (ハッシュテーブルのエントリとは対照的に、逆に、{ $_.Code }
いずれのシナリオでも機能しますが、Code
、該当する場合はより高速です)。
関連記事
- キーによるTypescriptグループ配列
- JSONオブジェクトの配列を特定のキーでグループ化し、重複を削除します
- PowerShellには、文字列の部分文字列を含む配列のインデックスを返す方法があります
- 特定のフィールドに基づいてオブジェクトの配列をグループ化します
- オブジェクトのJavascript配列グループおよび合計アイテム
- 他のすべての値を各値の配列にグループ化します。MongoDB
- 各JSONオブジェクトを分離し、JavaScriptで配列にグループ化するにはどうすればよいですか?
- キーに基づいてオブジェクトのJavaScript配列をグループ化する方法
- 配列の配列を重複のない配列に変換します
- サブドキュメントの配列を複数のフィールドでグループ化するにはどうすればよいですか?
ハッシュテーブルをPSCustomObjectsに変換し、グループ化して、新しいハッシュテーブルに割り当てます。
Get-Help about_Object_Creation
を参照[PSCustomObject]
の使用の詳細については ハッシュテーブルからカスタムオブジェクトを作成します。