Gle*_*ven 13 arrays powershell
所以我想说我有这个数组:
$requiredFruit= @("apple","pear","nectarine","grape")
Run Code Online (Sandbox Code Playgroud)
我给了第二个叫做的数组$fruitIHave.如何检查是否$fruitIHave包含所有内容$requiredFruit.如果在有多个项目不要紧,$fruitIHave就像只要一切$requiredFruit是存在的.
我知道我可以迭代列表,但这似乎效率低下,是否有内置的方法来执行此操作?
JPB*_*anc 25
你尝试Compare-Object:
$requiredFruit= @("apple","pear","nectarine","grape")
$HaveFruit= @("apple","pin","nectarine","grape")
Compare-Object $requiredFruit $haveFruit
InputObject SideIndicator
----------- -------------
pin =>
pear <=
Compare-Object $requiredFruit $haveFruit | where {$_.sideindicator -eq "<="} | % {$_.inputobject}
pear
Run Code Online (Sandbox Code Playgroud)
Ryn*_*ant 14
如果您有阵列:
$requiredFruit= @("apple","pear","nectarine","grape")
$someFruit= @("apple","banana","pear","nectarine","orange","grape")
$moreFruit= @("apple","banana","nectarine","grape")
Run Code Online (Sandbox Code Playgroud)
你可以得到一个布尔结果:
'Check $someFruit for $requiredFruit'
-not @($requiredFruit| where {$someFruit -notcontains $_}).Count
'Check $moreFruit for $requiredFruit'
-not @($requiredFruit| where {$moreFruit -notcontains $_}).Count
Run Code Online (Sandbox Code Playgroud)
使用数组的计数可以防止不匹配的单个值计算为False.例如:
# Incorrect result
-not (0| where {(1,2) -notcontains $_})
# Correct result
-not @(0| where {(1,2) -notcontains $_}).Count
Run Code Online (Sandbox Code Playgroud)
使用PowerShell v3,您可以select -first 1在发现第一个不匹配时停止管道(在v2中select -first 1只允许一个对象通过,但管道的先前元素继续处理).
-not @($requiredFruit| where {$moreFruit -notcontains $_}| select -first 1).Count
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
32924 次 |
| 最近记录: |