首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在将属性相乘到对象内的另一个属性之前,检查它是否存在?

在将属性相乘到对象内的另一个属性之前,检查它是否存在?
EN

Stack Overflow用户
提问于 2022-06-14 21:58:30
回答 1查看 95关注 0票数 1

我有一个对象,并对它进行迭代,并将A、B、C相乘。B是一个列表,我在其中使用元素的计数。有时,B不存在。

代码语言:javascript
运行
复制
$sum = ( $arrOfObjects | forEach-Object {$_.A * $_.B.Count * $_.C.Count } | Measure-Object -Sum).Sum

只要A,B,C存在,这是可行的。现在,我如何创建一个检查,以确保B存在之前,使用它的计数。

如果B不存在,我想用1作为数字。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-14 22:18:11

https://github.com/PowerShell/PowerShell/blob/master/README.md中,您可以使用三元条件作为简洁的解决方案:

代码语言:javascript
运行
复制
$_.A * ($null -eq $_.B ? 1 : $_.B.Count) * $_.C.Count

在PowerShell中,使用$(...)中的if语句( 子表达式运算符 )

代码语言:javascript
运行
复制
$_.A * $(if ($null -eq $_.B) { 1 } else { $_.B.Count }) * $_.C.Count

注意:

  • 上面的解决方案并不区分没有$_属性的B属性和这样的属性,但是值为$null
  • 如果需要区分这些情况,请将$null -eq $_.B替换为 $null -eq $_.psobject.Properties['B'],它使用属性进行反射,以测试具有给定名称的属性的存在。 -这有一个额外的优点,即在测试期间不检索属性的值,在情况上,虽然不是通常情况下,可能比正在执行的反射代价更高。
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72623835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档