如何解决ArrayFind在应返回索引值时返回false!
| 为什么arrayFindNoCase()返回false?它不应该返回2吗?local.data =
[
{
name = \"foo\",value = 5
},{
name = \"bar\",value = 6
}
];
local.key = arrayFindNoCase(data,{ value = 6 });
解决方法
并非如此,因为{value = 6}!= {name = \“ bar \”,value = 6}
, 它返回false,因为您正在搜索:
{ value = 6 }
这不是数组的元素。该数组具有:
{ name = \"bar\",value = 6 }
, 答案已经在这里-如您所见,您无法通过标准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>
, 您无法进行部分匹配...如果您进行了如下搜索,那么您将获得2。
local.key = arrayFindNoCase(local.data,{name = \"bar\",value = 6 }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。