gpt4 book ai didi

coldfusion - CFML 高效判断一个值是否存在于多个列表之一

转载 作者:行者123 更新时间:2023-12-02 08:29:55 24 4
gpt4 key购买 nike

这是我在 SO 上发表的第一篇文章,这是一个非常有值(value)的资源!

我正在尝试确定一个值(州代码)是否存在于代码列表中,如果存在,则设置一个代表分区的新变量(即销售区域,不匹配 = 15)。下面的代码有效,但我想提高我的技能并尽可能高效地执行此操作。所以我的问题是有没有“更好”的方法来达到相同的结果?

<cfset state = "LA">
<cfset division = 15>
<cfset position = 0>

<cfset aStates = ArrayNew(1)>
<cfset aStates[1] = "MA,ME,NH,RI,VT">
<cfset aStates[2] = "CT,DE,NJ,NY,DE">
<cfset aStates[3] = "DC,MD,VA,WV">
<cfset aStates[4] = "TN">
<cfset aStates[5] = "NC,SC">
<cfset aStates[6] = "GA">
<cfset aStates[7] = "FL">
<cfset aStates[8] = "AL,KY,LA,MS">
<cfset aStates[9] = "IL,WI">
<cfset aStates[10] = "CO,MN,ND,SD,WY">
<cfset aStates[11] = "IN,OH,MI">
<cfset aStates[12] = "ID,OR,UT,WA">
<cfset aStates[13] = "AZ,HI,NV">
<cfset aStates[14] = "CA">

<cfset position = 0>
<cfloop array="#aStates#" index="lStates">
<cfset position = position+1>
<cfif ListFindNoCase(lStates,variables.state) NEQ 0>
<cfset division = position>
</cfif>
</cfloop>

<cfdump var="#aStates#" label="states array">
<cfoutput>State: #state#</cfoutput>
<cfoutput>Division: #division#</cfoutput>

最佳答案

在目前的结构下,你依赖于字符串比较,所以没有太大的改进空间。

除非有特定原因必须对值进行硬编码,否则更灵活的方法是将信息存储在数据库中。创建表来存储“州”和“部门”,以及另一个表来存储关系:

States
StateID | Code | Name
1 | ME | Maine
2 | GA | Georgia
3 | CA | California
4 | NH | New Hampshire
...

Divisions
DivisionID | Name
1 | Sales Territory
...

DivisionStates
DivisionID | StateID
1 | 1
1 | 4
6 | 2
14 | 3
...

然后使用 OUTER JOIN 检索选定的状态和分区。假设 #state#将始终包含一个有效的条目,这些条目(未测试):

SELECT s.Name AS StateName
, CASE WHEN d.Name IS NULL THEN 'No Match' ELSE d.Name END AS DivisionName
FROM States s
LEFT JOIN DivisionStates ds ON ds.StateID = s.StateID
LEFT JOIN Divisions d ON d.DivisionID = ds.DivisionID
WHERE s.Code = <cfqueryparam value="#state#" cfsqltype="cf_sql_varchar">

我不知道 #state# 的来源变量,但我猜它可能是通过 <select> 形式传递的.如果它目前是硬编码的,您可以通过查询“状态”表并使用它来填充列表来进一步简化事情。此外,考虑使用 ID 作为列表值,而不是状态“代码”。

关于coldfusion - CFML 高效判断一个值是否存在于多个列表之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28227362/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com