You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell数组匹配计数异常:预期Five却得Two,求代码修正

PowerShell数组匹配计数问题修正

你的代码逻辑存在偏差:当前逻辑是统计$array中有多少元素在$array2中出现过(仅blue和red满足,总计2次),但你实际需要的是统计$array2中有多少元素属于$array(blue出现4次+red出现1次,总计5次)。以下是修正后的代码:

$array = @('blue','red','purple','pink')
$array2 = @('blue','red','blue','yellow','blue','blue','a','d')

# 统计$array2中属于$array的元素总数量
$matchingCount = ($array2 | Where-Object { $_ -in $array }).Count

# 将数字转换为对应英文表述
switch ($matchingCount) {
    0 { $number = "None" }
    1 { $number = "One" }
    2 { $number = "Two" }
    3 { $number = "Three" }
    4 { $number = "Four" }
    5 { $number = "Five" }
    default { $number = "Multiple" }
}

$number

修正说明

  1. 核心逻辑调整:使用Where-Object { $_ -in $array }过滤出$array2中所有属于$array的元素,再通过.Count获取总匹配数,这才是你需要的统计维度。
  2. 代码简化:用switch语句替代冗长的If-ElseIf链,提升可读性和维护性。
  3. 变量优化:移除了不必要的初始变量赋值,逻辑更清晰。

关于你提到的数值数组“符合预期”的情况,大概率是测试场景的巧合——原逻辑本质还是统计$array中存在于$array2的元素数量,而非$array2的匹配元素总数,建议重新验证数值数组的测试用例。

内容的提问来源于stack exchange,提问作者Jim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 15:09:54