为什么arrayFindNoCase()返回false?它不应该返回2?
local.data =
[
{
name = "foo",
value = 5
},
{
name = "bar",
value = 6
}
];
local.key = arrayFindNoCase(data, { value = 6 });
答案 0 :(得分:2)
不是真的,因为{value = 6}!= {name =“bar”,value = 6}
答案 1 :(得分:1)
你无法进行部分匹配...如果你搜索过如下,那么你就得到了2。
local.key = arrayFindNoCase(local.data, {name = "bar",value = 6 }
答案 2 :(得分:1)
它正在返回false,因为您正在搜索:
{ value = 6 }
不是数组的元素。该数组有:
{ name = "bar", value = 6 }
答案 3 :(得分:1)
答案已在此处 - 正如您所发现的,您无法通过标准CF函数搜索阵列中的结构。
如果你想要这个特定的功能,这里有一个简单的例子。
<cffunction name="arrayFindStructKey" returntype="numeric">
<cfargument name="arr" type="array" required="true">
<cfargument name="key" type="string" required="true">
<cfargument name="val" type="string" required="true">
<cfset var i = 0>
<cfloop from="1" to="#arrayLen(arguments.arr)#" index="i">
<cfif isStruct(arguments.arr[i]) and structKeyExists(arguments.arr[i], arguments.key)>
<cfif arguments.arr[i][arguments.key] eq arguments.val>
<cfreturn i>
</cfif>
</cfif>
<\cfloop>
<cfreturn 0> <!--- not found --->
</cffunction>