我正在尝试使用我拥有的一系列结构执行一些简单的任务,并且感觉我几乎完成了我的解决方案,但是我遇到了一些麻烦。我正在努力完成以下任务:
使用以下值创建结构; id,name,int arr []。
我正在使用FOR循环迭代ID,name,sub id等值的数组。
对于我列表中的每个项目,我正在尝试做出决定,如果我之前看过该结构,以及它是否在我的代理商Array中。
如果不存在,请将当前结构添加到数组中。如果它已经存在于数组中,则将当前的sub id添加到struct的int arr []条目中。
当我运行下面的代码时,我不断收到错误," BigDecimal不能用作数组"我不明白发生了什么。我是CFSCRIPT的新手,所以也许我没有从结构中获取arr []值或没有定义我的结构正确所以第三个值是Array类型。
remote array function getCurrAgenciesList(String Acct_Id) returnformat="JSON"
{
include "qry_getCurrentAssignedRepoAgenciesAll.cfm";
//define arr to hold values...
var agenciesArr = [];
var recordLength = getCurrentAssignedRepoAgencies.RecordCount;
for(agency in getCurrentAssignedRepoAgencies)
{
currentStruct = {id=agency.repoID, name=agency.repoName, relatedColl=agency.collatSub};
var structArrIndex = arrayOfStructsFind(agenciesArr, "id", agency.repoID);
if(structArrIndex eq 0)
{
//add new struct to agenciesArr
ArrayAppend(agenciesArr,currentStruct,"true");
}
else
{
//find current struct in array using index from before...
var collFromStr = agenciesArr[structArrIndex]['relatedColl'];
//add current collatsub to array, append.
var updatedStruct = ArrayAppend(collFromStr,agency.collatSub);
//reassign updated arr[] struct value back in array.
agenciesArr[structArrIndex]['relatedColl'] = collFromStr;
}
}
//return...
return agenciesArr;
}
function arrayOfStructsFind(Array, SearchKey, Value)
{
var result = 0;
var i = 1;
var key = "";
for (i=1;i lte arrayLen(array);i=i+1)
{
for (key in array[i])
{
if(array[i][key]==Value and key == SearchKey)
{
result = i;
return result;
}
}
}
return result;
}
任何帮助都会非常感激,因为我觉得我最后还是坚持这个或者我缺少的东西。欢迎任何反馈。
更新错误发生在第27行,
var updatedStruct = ArrayAppend(collFromStr,agency.collatsub);
更新3:39 PM
我认为这个问题与上述问题无关,但这一行:
var collFromStr = agenciesArr[structArrOmdex]['relatedColl'];
我要求从key,relatedColl返回结构中的数组。我想只有一个整数返回,所以当执行下一个Array Append操作时,代码会爆炸。那么,如何在Cold Fusion \ CFSCRIPT ????
中的结构内创建一个数组答案 0 :(得分:2)
我通过进行以下更改解决了我的问题:
我还从this link收集了大量信息。太棒了。
最终代码:
remote array function getCurrAgenciesList(String Acct_Id) returnformat="JSON"
{
include "qry_getCurrentAssignedRepoAgenciesAll.cfm";
//define arr to hold values...
var agenciesArr = [];
var recordLength = getCurrentAssignedRepoAgencies.RecordCount;
for(agency in getCurrentAssignedRepoAgencies)
{
arr = [agency.collatSub];
currentStruct = {id=agency.repoID, name=agency.repoName, relatedColl=arr};
var structArrIndex = arrayOfStructsFind(agenciesArr, "id", agency.repoID);
if(structArrIndex eq 0)
{
//add new struct to agenciesArr
ArrayAppend(agenciesArr,currentStruct,"true");
}
else
{
//find current struct in array using index from before...
var collFromStr = agenciesArr[structArrIndex]['relatedColl'];
//add current collatsub to array, append.
ArrayAppend(collFromStr,agency.collatSub,"true");
//reassign updated arr[] struct value back in array.
agenciesArr[structArrIndex]['relatedColl'] = collFromStr;
}
}
//return...
return agenciesArr;
}
function arrayOfStructsFind(Array, SearchKey, Value)
{
var result = 0;
var i = 1;
var key = "";
for (i=1;i lte arrayLen(array);i=i+1)
{
for (key in array[i])
{
if(key == SearchKey and array[i][key]==Value)
{
result = i;
return result;
}
}
}
return result;
}