AHKV1如何将关联数组中子对象的fullname值拼接为长字符串?
AHK V1 遍历关联数组提取指定属性并拼接字符串
原始关联数组定义
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
尝试的无效代码
最初尝试用数字索引循环,但关联数组不支持A_Index这类数字索引访问,仅支持键名索引,因此代码无法生效:
Loop,% obj str += obj[A_Index].fullname ConsoleX(str) ; 无法得到目标结果
内置解决方案
方案1:使用for循环直接遍历
AHK V1支持用for循环遍历关联数组的键值对,直接获取每个子对象的fullname进行拼接:
str := "" for key, subObj in obj str .= subObj.fullname ConsoleX(str) ; 输出:John SmithHellen SmithTim Smith
方案2:通过ObjOwnKeys获取键数组后循环
用ObjOwnKeys函数获取关联数组的所有自有键,得到一个可数字索引的数组,再循环拼接:
str := "" keys := ObjOwnKeys(obj) Loop, % keys.Length() { currentKey := keys[A_Index] str .= obj[currentKey].fullname } ConsoleX(str) ; 输出目标字符串
以上两种都是AHK V1内置的实现方式,无需额外依赖,可实现类似PowerShell中遍历对象属性的常用操作。
内容的提问来源于stack exchange,提问作者GaryAtlan82
相关产品推荐
相关产品推荐

