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)一直这样做。
感谢您的帮助。
您可以只使用一个简单的 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 中
+
不会连接字符串。这是为了添加数字。.
是串联运算符。