PowerShell:无需循环判断数组所有元素是否为相同字符串
PowerShell 判断数组所有元素是否为相同字符串的无循环方法
以下是几种无需显式循环的简便方法:
方法一:使用 Compare-Object
通过对比数组第一个元素与整个数组的差异,无差异则说明所有元素相同:
# 全相同的数组 $array = @('123', '123', '123', '123') (-not (Compare-Object $array[0] $array)) # 返回 TRUE # 存在不同元素的数组 $array = @('2553', '123', '123', '123') (-not (Compare-Object $array[0] $array)) # 返回 FALSE
说明:Compare-Object 仅当对比对象存在差异时返回结果,无差异时返回 $null,对结果取反即可得到判断值。
方法二:使用 Select-Object -Unique
提取数组中的唯一元素,若唯一元素数量为1则所有元素相同:
# 全相同的数组 $array = @('123', '123', '123', '123') ($array | Select-Object -Unique).Count -eq 1 # 返回 TRUE # 存在不同元素的数组 $array = @('2553', '123', '123', '123') ($array | Select-Object -Unique).Count -eq 1 # 返回 FALSE
说明:Select-Object -Unique 会直接筛选出数组中的不重复元素,通过判断其数量即可得出结论。
边界情况说明
- 若数组为空,上述方法会返回
$false(空数组无元素可判断) - 若数组仅含单个元素,上述方法会返回
$true(单个元素自然满足所有元素相同)
内容的提问来源于stack exchange,提问作者MelanieD
相关产品推荐
相关产品推荐

