微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ArrayFind在应返回索引值时返回false!

如何解决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 举报,一经查实,本站将立刻删除。