爲什麼arrayFindNoCase()返回false?它不應該返回2嗎?ArrayFind()在返回索引值時返回false!
local.data =
[
{
name = "foo",
value = 5
},
{
name = "bar",
value = 6
}
];
local.key = arrayFindNoCase(data, { value = 6 });
爲什麼arrayFindNoCase()返回false?它不應該返回2嗎?ArrayFind()在返回索引值時返回false!
local.data =
[
{
name = "foo",
value = 5
},
{
name = "bar",
value = 6
}
];
local.key = arrayFindNoCase(data, { value = 6 });
你不能做部分匹配...如果你已經搜查如下,你已經得到了2
local.key = arrayFindNoCase(local.data, {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,即'{name =「bar」,value = 6}'。 – Leigh 2011-05-27 19:26:16
@Leigh,我不知道是這樣。如果我只是在尋找部分匹配,我有什麼選擇嗎? – Mohamad 2011-05-27 19:31:05
@Leigh,這就是我最終做的。事情是,該功能已經在一個循環內。所以我不得不做一個有點複雜的嵌套循環。我明白了。謝謝。 – Mohamad 2011-05-27 20:43:57