AHKV1:如何获取由关联数组保存的值组成的长字符串?

问题描述 投票:0回答:1
obj                     := {}
obj.kevin               :=  {}
obj.kevin.fullname  :=  "John Smith"
obj.kevin.age           :=  50

obj.hellen              :=  {}
obj.hellen.fullname := "Hellen Smith"
obj.hellen.age          := 60

obj.tim                 :=  {}
obj.tim.fullname        := "Tim Smith"
obj.tim.age             := 30

假设我有一个像上面这样的对象。我想获取每个子对象的

fullname
值并将其连接起来形成一个长字符串:

John SmithHellen SmithTim Smith

我想我可以用一个简单的

loop
来做到这一点:

Loop,% obj
        str += obj[A_Index].fullname

ConsoleX(str) ; "John SmithHellen SmithTim Smith"

但显然关联数组不支持括号索引

[]
,就像简单数组那样(
MyArray[3]
),我的印象是他们支持。关联数组允许
obj["time"]
但我不确定在这种情况下我能用它做什么。

我想到使用循环来执行此操作,因为我认为这是一种快速而肮脏的方法,是否有实际内置的工具可以执行此操作?

这是一件很常见的事情。例如,枚举对象具有的属性的所有值,并可能将它们连接到一个字符串中。我在其他地方(例如 PowerShell)一直这样做。

感谢您的帮助。

autohotkey
1个回答
0
投票

您可以只使用一个简单的 for 循环(文档)

obj := { "hellen": { "age": 60, "fullname": "Hellen Smith" }
       , "kevin":  { "age": 50, "fullname": "John Smith"   }
       , "tim":    { "age": 30, "fullname": "Tim Smith"    } }


for each, person in obj
    str .= person.fullname ", "

MsgBox, % RTrim(str, ", ")

此外,在 AHK 中

+
不会连接字符串。这是为了添加数字。
.
是串联运算符。

© www.soinside.com 2019 - 2024. All rights reserved.