Arrays ColdFusion 8阵列查找替代品

Arrays ColdFusion 8阵列查找替代品,arrays,coldfusion,coldfusion-8,Arrays,Coldfusion,Coldfusion 8,我有一个数组,它的结构是ImageID和Custnum。 我需要找到一个特定的ImageID并检索它的Custnum。 我使用的是ColdFusion 8,它没有ArrayFind命令。 在不循环每个项目的情况下,我如何做到这一点?谢谢。您的问题可能在这里得到了某种程度的回答“”,但除了循环之外,我看不到任何其他方法 您始终可以创建和使用UDF,但它必须使用循环 你到底为什么不想使用循环呢?数组中有那么多元素吗?只要记住在找到元素后使用cfbreak停止遍历数组的其余部分。鉴于您的情况,我认为a

我有一个数组,它的结构是ImageID和Custnum。 我需要找到一个特定的ImageID并检索它的Custnum。 我使用的是ColdFusion 8,它没有ArrayFind命令。
在不循环每个项目的情况下,我如何做到这一点?谢谢。

您的问题可能在这里得到了某种程度的回答“”,但除了循环之外,我看不到任何其他方法

您始终可以创建和使用UDF,但它必须使用循环


你到底为什么不想使用循环呢?数组中有那么多元素吗?只要记住在找到元素后使用
cfbreak
停止遍历数组的其余部分。

鉴于您的情况,我认为
arrayFind()
无论如何都不会对您有多大帮助,因为要使用
arrayFind()
查找内容,您需要确切地知道您要查找的内容。虽然您知道您的
ImageID
,但您不知道与之相关的
Custnum
(因此您的潜在问题)

CF中没有任何本机的东西可以帮助您,但是有一个UDF,它会起作用

它是为CF9编写的,但很容易后端口到CF8。修改后的CF8友好版本-如下所示:

<cfscript>
a = [
    {ImageID=1, Custnum=1},
    {ImageID=2, Custnum=2},
    {ImageID=3, Custnum=3},
    {ImageID=4, Custnum=4}
];
testStruct = {a=a};
result = structFindKeyWithValue(testStruct, "ImageID", 2, "ONE");

function structFindKeyWithValue(struct, key, value, scope){
    var keyResult = false;
    var valueResult = [];
    var i = 0;

    if (!isValid("regex", arguments.scope, "(?i)one|all")){
        throw(type="InvalidArgumentException", message="Search scope #arguments.scope# must be ""one"" or ""all"".");
    }
    keyResult = structFindKey(struct, key, "all");
    for (i=1; i <= arrayLen(keyResult); i++){
        if (keyResult[i].value == value){
            arrayAppend(valueResult, keyResult[i]);
            if (scope == "one"){
                break;
            }
        }
    }
    return valueResult;
}
</cfscript>
<cfdump var="#result#">

a=[
{ImageID=1,Custnum=1},
{ImageID=2,Custnum=2},
{ImageID=3,Custnum=3},
{ImageID=4,Custnum=4}
];
testStruct={a=a};
结果=structFindKeyWithValue(testStruct,“ImageID”,2,“一”);
函数structFindKeyWithValue(结构、键、值、范围){
var-keyResult=false;
var valueResult=[];
var i=0;
如果(!isValid(“regex”,arguments.scope,(?i)one | all”)){
throw(type=“InvalidArgumentException”,message=“搜索范围”arguments.scope必须为“一”或“全部”);
}
keyResult=structFindKey(struct,key,“all”);

对于(i=1;我感谢这很有帮助!那么如何将此脚本用于数组中的数组。没有什么不同。structFindKey()/~Value()将遍历尽可能多的数组级别以定位他们检查的结构。嗯。我尝试过,但没有结果。你能检查一下链接看看我可能做错了什么吗?我所能看到的只是输出,这无助于我猜测你正在运行的代码。你能把你的代码放在gist或pastebin之类的东西中吗?这些代码对我来说没有多大用处我没有权限访问你的数据库,所以我无法运行代码来查看我得到了什么。你能提供一些独立的代码吗?但表面上看,它看起来都是合法的。所以有点令人费解。