arrays - 如何使用数组对唯一数据进行分组
问题描述
$array =@("1234","2345","3456","5555")
$source = @("1234-abc","1234-xyz","1234-pqr","2345-abc","3456-xyz","5555")
$source | where {
$found=$false
foreach($arr in $array)
{
if($_.contains($arr))
{
$found=$true
$ID=$_
if($found -eq $true)
{
$value=$ID
$myID =@($myID)
$myID=$myID +$ID } } }}
==========================
我得到如下输出: 1234-abc 1234-xyz 1234-pqr 2345-abc 3456-xyz 5555
但我需要如下输出:应用程序 ID + 它的相关连接,以便我可以使用它的连接名称向应用程序所有者发送电子邮件。
1234
美国广播公司
xyz
pqr
我需要在这里调用电子邮件功能以使用连接名称向 1234 应用程序的所有者发送电子邮件
2345
美国广播公司
我需要在这里调用电子邮件功能以向 2345 应用程序的所有者发送电子邮件,连接名称为 3456
xyz
我需要在此处调用电子邮件功能以使用连接名称向 3456 应用程序的所有者发送电子邮件
我已经为它准备好了电子邮件功能,但很难一次获得详细信息,目前我正在根据应用程序连接发送电子邮件,即 3 封邮件,用于与同一所有者的 3 个连接
解决方案
正如@JeffZeitlin 建议的那样,您可以使用这样的字典:
[string[]]$array =@("1234","2345","3456","5555")
[string[]]$source = @("1234-abc","1234-xyz","1234-pqr","2345-abc","3456-xyz","5555")
$datas = New-Object System.Collections.Generic.Dictionary"[string,string[]]"
foreach($a in $array){
[string[]]$it = @()
foreach($s in $source){
if($s.Contains($a)){
$it += $s.Split("-")[1] + ","
}
}
$datas.Add($a, $it.Split(",", [System.StringSplitOptions]::RemoveEmptyEntries))
}
#display result
foreach ($key in $datas.Keys) {
Write-Host "Key: $key $($datas[$key].Count) values -> $($datas[$key])"
}
Write-Host "**********************"
Write-Host "Other way to display:"
foreach ($key in $datas.Keys) {
Write-Host "Key: $key"
foreach ($value in $datas[$Key]){
Write-Host "$value"
}
Write-Host "--------------------"
}
推荐阅读
- angular - 当 httpClient 失败时,它会在错误回调中返回一个可观察到的错误,而不是一个错误对象
- c - 如何检查 gdb 中的 [sp,#4] 值
- http - 对于未请求的必需数据,合适的 HTTP 错误是什么
- python - 减少 PyQt5 中的间距 - GridLayout - 小部件之间
- python - 如何在 Python 中使用 plt.imshow(data) 保存图像之前打印出 16 位数据?
- ios - 使用带有 Fastlane 的 plist 变量增加内部版本号
- regex - XSLT 2 分析字符串查找块名称
- python - 使用 Tkinter 中的菜单栏在页面之间切换
- kotlin - 如何有选择地使用 Kotlin DSL 应用一些插件以及 gradle 和 android 的插件块
- python - 在python中创建输出文件名+文件路径的目录文档