我有一个包含结构数组的对象,生成它的代码在查询上循环,从查询的每一行中获取各种值并填充一个结构,当行完成时,它将它附加到一个数组并开始处理再次:
<cfscript>
variables.x = 1;
variables.aArray = [];
// loop over my query
while(variables.x lte variables.qQuery.recordcount){
variables.stStruct = {};
variables.stStruct.nID = variables.qQuery.id[variables.x];
variables.stStruct.sText = variables.qQuery.text[variables.x];
//etc...
arrayAppend(variables.aArray,variables.stStruct);
variables.x++;
}
variables.oObject.setArray(variables.aArray);
</cfscript>
稍后在我的代码中,我希望能够仅使用 nID 提取有关该数组中项目的详细信息以供指导。我不知道该 nID 的数组位置,这意味着使用一种复杂的方法来尝试找到它。
我有一个想法,通过更改上面的代码来创建一个位置结构。
<cfscript>
variables.x = 1;
variables.aArray = [];
variables.stTracker = {};
while...yadda
variables.stStruct = {};
yadda yadda
structInsert(variables.stTracker,"variables.qQuery.id[variables.x]","variables.x");
variables.x++;
while end
variables.oObject.setArray(variables.aArray);
variables.oObject.setTracker(variables.stTracker);
</cfscript>
这意味着我可以做类似的事情variables.nPosition = structFindKey(variables.oObject.getTracker(),'88')[1].value;
。这仍然感觉很不雅,我想知道我是否遗漏了一些让这比我正在做的事情更容易的东西。
如果有使用 java 的解决方案来解决这个问题,我会很高兴。