作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下示例脚本
$aDomains = @{}
$aDomains['a-test.nl'] = @{}
$aDomains['b-test.nl'] = @{}
$aDomains['c-test.nl'] = @{}
$aDomains['d-test.nl'] = @{}
$aDomains['e-test.nl'] = @{}
$aDomains
这看起来很简单,但是如果我运行这个脚本,输出会非常出乎意料:
$aDomains
Name Value
---- -----
e-test.nl {}
d-test.nl {}
b-test.nl {}
a-test.nl {}
c-test.nl {}
如何使输出与添加项的顺序相匹配?由于脚本中接下来发生的事情,我确实需要在所有实例上使用 @{}。
此外,在脚本中添加这个根本没有效果:
$aDomains = $aDomains | Sort-Object
最佳答案
如您所见,默认情况下哈希表是无序的。从 PowerShell 3.0 开始,您可以对哈希表进行排序,在这种情况下它将保持顺序。
看下面的例子:
$aDomains = [ordered] @{}
$aDomains['e-test.nl'] = @{}
$aDomains['a-test.nl'] = @{}
$aDomains['b-test.nl'] = @{}
$aDomains['c-test.nl'] = @{}
$aDomains['d-test.nl'] = @{}
$aDomains['e-test.nl'] = @{}
$aDomains
Name Value
---- -----
e-test.nl {}
a-test.nl {}
b-test.nl {}
c-test.nl {}
d-test.nl {}
如您所见,e-test.nl 在列表中出现了两次,但只在顶部添加了一次,因此它确实符合添加的顺序,不会添加两次。要使其正常工作,请将 [ordered]
标记添加到哈希表分配的开头。
虽然侧节点很小。如果使用.ContainsKey()函数,需要将这里改为.Contains()
关于Powershell,添加项目以散列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68858434/
我是一名优秀的程序员,十分优秀!