首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将嵌套数组中的单个对象表示为数组?

如何将嵌套数组中的单个对象表示为数组?
EN

Stack Overflow用户
提问于 2020-12-15 06:08:18
回答 2查看 343关注 0票数 1

我有一个具有以下结构的powershell嵌套数组。

代码语言:javascript
复制
$jHosts = @(@("Host-1","Host-3"),@("Host-2","Host-4"),@("Host-5"))

此外,这里还有我的powershell脚本来迭代嵌套数组。

代码语言:javascript
复制
    for($i=0; $i -le $jHosts.Length; $i++){  
        Write-Host $jHosts[$i]  
        for($k=0;$k -le $jHosts.Length; $k++){  
            Write-Output $jHosts[$i][$k]
        }
    }

Write-output显示的输出如下,

代码语言:javascript
复制
HOST-1
HOST-3
HOST-2
HOST-4
H
O
S
T

正如我的for循环读取前两个嵌套数组中的所有值一样,但是当第三个数组的字符串是一个对象时,它会读取每个字符。我在这里做错什么了?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-15 07:17:19

我无法重现您的结果,但您的代码无论如何都包含两个逻辑错误:

  1. 通过在循环定义中使用-le运算符来忽略实际的数组边界。使用-lt代替.

  1. 您对嵌套数组使用了错误的长度。在"k“循环中将$jHosts.Length替换为$jHosts[$i].Length .

这就是您的代码如何产生有效结果的方式:

代码语言:javascript
复制
$jHosts = @(@("Host-1","Host-3"),@("Host-2","Host-4"),@("Host-5"))

for($i=0; $i -lt $jHosts.Length; $i++){  
    Write-Host $jHosts[$i]  
    for($k=0;$k -lt $jHosts[$i].Length; $k++){  
        Write-Output $jHosts[$i][$k]
    }
}

输出:

代码语言:javascript
复制
Host-1 Host-3
Host-1
Host-3
Host-2 Host-4
Host-2
Host-4
Host-5
Host-5
票数 0
EN

Stack Overflow用户

发布于 2020-12-15 12:07:58

若要迭代数组,请使用Count属性,而不是Length。在您的示例中,由于数组中的最后一个元素只有一个项,所以PowerShell将对其进行解压,使其充当单个字符串"Host-5“。

如果您执行"Host-5".Length,答案是6 (字符串中有6个字符)。

如果您执行"Host-5".Count,则答案是1 (只有一个字符串)

而且,通过执行-le来迭代一个级别太深了,这应该是-lt,因为您在0开始迭代。

代码语言:javascript
复制
$jHosts = @(@("Host-1","Host-3"),@("Host-2","Host-4"),@("Host-5"))
for($i=0; $i -lt $jHosts.Count; $i++){  
    for($k=0;$k -lt $jHosts[$i].Count; $k++){  
        Write-Output $jHosts[$i][$k]
    }
}

返回

代码语言:javascript
复制
Host-1
Host-3
Host-2
Host-4
Host-5

如果我像在代码中那样添加额外的行Write-Host $jHosts[$i],然后执行

代码语言:javascript
复制
$jHosts = @(@("Host-1","Host-3"),@("Host-2","Host-4"),@("Host-5"))
for($i=0; $i -lt $jHosts.Count; $i++){  
    Write-Host $jHosts[$i]
    for($k=0;$k -lt $jHosts[$i].Count; $k++){  
        Write-Output $jHosts[$i][$k]
    }
}

结果是

代码语言:javascript
复制
Host-1 Host-3
Host-1
Host-3
Host-2 Host-4
Host-2
Host-4
Host-5
Host-5
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65300827

复制
相关文章

相似问题

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