说我有一个数组
a = ['hello', 'world', '1', '2', 'other', 'thing']
c = dict(zip(a, a))
如何以
的形式向用户显示$something = @(
"first",
"second"
)
我可以通过哈希表和手动映射
来完成此操作1. first
2. second
Selection :
并执行以下操作
@{
1="first"
2="second"
};
但是如果需要使用数组执行此操作,我该怎么做呢。即循环该项目并显示索引以供用户选择。 ?
答案 0 :(得分:1)
您可以使用IndexOf()
方法查找数组中的索引。
$something | ForEach-Object {Write-Host "$([Array]::IndexOf($something, $_)). $_ "}
关于小心Write-Host
的标准警告。您也可以查看Out-GridView
。
答案 1 :(得分:1)
使用for
循环迭代数组的元素,并在索引+ 1前面加上每个值。
$something = 'first', 'second'
for ($i = 0; $i -lt $something.Count; $i++) {
Write-Host ('{0}. {1}' -f ($i+1), $something[$i])
}
[int32]$constuctPayload.Action = Read-Host -Prompt 'Selection'
我建议使用PromptForChoice()
方法而不是Read-Host
:
$something = '&first', '&second'
$title = 'The title.'
$msg = 'Selection?'
$choices = $something | ForEach-Object {
New-Object Management.Automation.Host.ChoiceDescription $_
}
$options = [Management.Automation.Host.ChoiceDescription[]] $choices
$default = 0
$constuctPayload.Action = $Host.UI.PromptForChoice($title, $msg, $options, $default)