首页 > 解决方案 > 需要创建一个带有分隔符的字符串数组的树状结构

问题描述

我需要转换一个字符串数组,这是一个由“/”分隔的列表。

基本上我需要这个:

[
    "label1/label12/label13/label14",
    "label1/label12/label15",
    "label1/label12/label16",
    "label7/label72/label73"
]

得到这样的:

{
    "label1": {
        "label12": {
            "label13": "label14",
            "label15",
            "label16"
        }
    },
    "label7": {
        "label72": "label73"
    }
}

这有可能吗?

编辑:在Drew给出了我的问题的解决方案之后,正如我所写的那样,我现在需要一种方法来使用像“+++ In work +++”这样的键来完成它

Edit2:第二种解决方案效果更好。感谢你们!

标签: coldfusion

解决方案


<cfset arrLabels = [
    "label1/label12/label13/label14",
    "label1/label12/label15",
    "label1/label12/label16",
    "label7/label72/label73"
]>




<cffunction name="labelConversion" returntype="struct">
    <cfargument name="arrLabels" type="array">
    <cfset var structLabels = {} />

    <cfloop from="1" to="#ArrayLen(arguments.arrLabels)#" index="i">
        <cfset StructGet("structLabels."&replace(arguments.arrLabels[i],'/','.', 'all'))>
    </cfloop>

    <cfreturn structLabels />
</cffunction>


<cfdump var="#labelConversion(arrLabels)#">
<cfabort>

推荐阅读