用其他列表替换List

时间:2016-06-30 04:15:24

标签: coldfusion

我有一段代码,我试图用其他价格替换一些价格表。

FORM.GETSELECTION   -2,-1,30.0000
FORM.GETSELECTIONTEXT   0,850,0
FORM.GET_ITEMS  YES~25.17,YES~250.0,YES~150.0

我正在尝试的是:-2在逗号之前的form.get_items符号之后会有~的值,因为它位于1位置。

如果值为-1,我将从form.getselectiontext获得850的值。

第3项的价值来自getselection,因为它没有-1-2

我尝试使用循环,但对于我应该尝试什么感到困惑

<cfset manageprices = form.getselection>
<cfset indx = 0>
<cfloop list="#manageprices#" index="op">
    <cfset indx = indx + 1>
    <cfoutput>#op#</cfoutput>
</cfloop>

1 个答案:

答案 0 :(得分:0)

所以我认为你所追求的输出是25.17,850,30.0000。如果是这样,那么你可以这样做:

<cfscript>
FORM.GETSELECTION = "-2,-1,30.0000";
FORM.GETSELECTIONTEXT = "0,850,0";
FORM.GET_ITEMS = "YES~25.17,YES~250.0,YES~150.0";


result = [];
listEach(form.getselection, function(value, index) {
    switch (value) {
        case "-2":
            result.append(listLast(listGetAt(form.get_items, index), "~"));
            break;
        case "-1":
            result.append(listGetAt(form.getselectiontext, index));
            break;
        default:
            result.append(value);
    }
});

writeDump(result);
writeDump(arrayToList(result));
</cfscript>

示例:http://trycf.com/gist/d9e4d20f07b76e0b2cbc8d140a097e29/acf11?theme=monokai

我不确定您使用的是哪个版本的ColdFusion - 上述代码适用于ColdFusion 11或更高版本。如果您使用的是旧版本,那么您可以自行执行简单的循环并跟踪当前索引,而不是使用listEach,例如:

<cfscript>
FORM.GETSELECTION = "-2,-1,30.0000";
FORM.GETSELECTIONTEXT = "0,850,0";
FORM.GET_ITEMS = "YES~25.17,YES~250.0,YES~150.0";


result = [];
index = 0;
for(value in form.getselection) {
    index++;
    switch (value) {
        case "-2":
            arrayAppend(result, listLast(listGetAt(form.get_items, index), "~"));
            break;
        case "-1":
            arrayAppend(result, listGetAt(form.getselectiontext, index));
            break;
        default:
            arrayAppend(result, value);
    }
};

writeDump(result);
writeDump(arrayToList(result));
</cfscript>

示例:http://trycf.com/gist/38e8f85539886faf3ec9202688ca9c9f/acf?theme=monokai