используя List для удаления элементов из середины, первой позиции и последней позиции в последовательности - PullRequest
0 голосов
/ 11 июня 2018

пытается обработать удаление списка, но застрял в процессе удаления: вот мой маленький смысл, над которым я работаю, любая помощь приветствуется

https://trycf.com/gist/aa3871e76db36ad446b770b9bbbb4cec/lucee5?theme=monokai

<cfset lstFirst = "1,2,3,4,5">

<cfset lstMiddle = "6,7,8,9,10">

<cfset lstLast = "11,12,13,14,15">

Из lstFirst я должен быть в состоянии удалить из обратного, как 5,4,3,2,1, но я не должен быть в состоянии удалить из середины следующего элемента, который является 2

Из lstMiddle, еслисредний - 8, я должен иметь возможность удалить 7,6 и т. д. или 9,10, но не могу удалить 6,10 без удаления 7 и 9

из lstLastкоторый полностью противоположен lstFirst, где выбран последний элемент, и я должен иметь возможность удалить с 14,13,12 вперед, но не могу удалить с середины или с 11 вперед, он должен начать свое удаление с 14 или 15 в обратном направлениитак я пытаюсь заставить это работать

1 Ответ

0 голосов
/ 13 июня 2018
**<cfoutput>
    <cfset lstFirst = "1,2,3,4,5">
    <cfset lstMiddle = "6,7,8,9,10">
    <cfset lstLast = "11,12,13,14,15">

    <!--- It's work all dynamic values for lstFirst like 1,2,3,4,5 OR 1,2,3,4,5,6,7,8,9,10 OR 1,2,3,4,5,6,7,8,9,10,11,12 etc.... --->
    ======= Delete all number from reverse and except very next item to middle ====

    <cfset convertToArray = listtoarray(lstFirst)>
    <cfset getRoundValue =round(arraylen(convertToArray)/2)>
    <cfset findMidNextEle = ArraySlice(convertToArray,1,getRoundValue)>

    <cfset LfirstMiddle = listgetat(lstFirst,listfind(lstFirst,listlast(arraytolist(findMidNextEle)))-1)>

    <cfloop from="#listlen(lstFirst)#" to="1" index="i" step="-1">
        <cfset listgetVal = listgetat(lstFirst,i)>
        <cfif LfirstMiddle NEQ listgetVal >
            <cfset lstFirst =listdeleteat(lstFirst,i)>
        </cfif>
        <br/><cfdump var="#lstFirst#" /><br/>
    </cfloop>



    =========== Delete 7,6 and so on or 9,10 and  delete 6,10 without deleting 7 and 9 ================================= <br/>

    <cfset lstMiddleMiddle =  listfind(lstMiddle,listgetat(lstMiddle,listfind(lstMiddle,listlast(mid(lstMiddle,1,listlen(lstMiddle)))))) >

    <cfloop from="1" to="#listlen(lstMiddle)#" index="j">

        <cfset userList = listlen(lstMiddle)>

        <cfif userList GT 3 >
            <cfset lstMiddle1 = listdeleteat(lstMiddle,lstMiddleMiddle-1)>
            <cfset lstMiddle2 = listdeleteat(lstMiddle1,lstMiddleMiddle)>

            <cfset lstMiddleMiddle = listfind(lstMiddle2,listgetat(lstMiddle2,listfind(lstMiddle2,listlast(mid(lstMiddle2,1,listlen(lstMiddle2))))))>
            <cfset lstMiddle = lstMiddle2>
            <br/><cfdump var="#lstMiddle2#" /></br>
        <cfelse>
            <cfset lstMiddle3 = listdeleteat(lstMiddle2,1)>
            <cfset lstMiddle4 = listdeleteat(lstMiddle3,2)>
            <cfbreak/>
        </cfif>
    </cfloop>
    enter code here
    <cfdump var="#lstMiddle4#" /> <br/>
    =============== Delete from reverse except last number ==========

    <!--- It's will work for all dynamic values --->

    <cfset LastEle = listlast(lstLast)>
    <cfloop from="#listlen(lstLast)#" to="1" step="-1" index="k">
        <cfset getCurrentValue = listgetat(lstLast,k)>

        <cfif LastEle NEQ getCurrentValue>
            <cfset lstLast =listdeleteat(lstLast,k)>
        </cfif>
        </br><cfdump var="#lstLast#" /><br/>
    </cfloop>
</cfoutput>**
...