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 }
    

要回复问题请先登录注册