1. 程式人生 > 實用技巧 >10個工具讓你的 shell 指令碼更強大

10個工具讓你的 shell 指令碼更強大

<style type="text/css">
        [v-cloak]{display: none;}
        body {
            margin: 0;
            padding: 0;
        }

        #app {
            width: 400px;
            margin: 0 20px;
            text-align: left;
        }
</style>
<div id="app" v-cloak>
    <input type
="text" v-model="gg" @input="input"> <div v-for="(item,index) in list" :key="index"> {{item.Item_Code}}-{{item.Item_Name}} <div v-for="(item2,index2) in item.ChildList" :key="index2" style="padding-left: 50px;"> {{item2.Item_Code}}-{{item2.Item_Name}}
<div v-for="(item3,index3) in item2.ChildList" :key="index3" style="padding-left: 50px;"> {{item3.Item_Code}}-{{item3.Item_Name}} </div> </div> </div> </div>
let vm = new Vue({
        el: '#app',
        data: {
            gg: '',
            list: [],
            oldList: [],
        },
        created() {
            
this.getData(); }, methods: { factorial(ary,str){ for(var k=0; k<ary.length; k++){ var cur = ary[k].Item_Code; var wzcur = ary[k].Item_Name; var curChild = ary[k].ChildList; if(curChild != undefined && curChild.length != 0){ //這裡使用遞迴 this.factorial(curChild,str) if(curChild.length == 0 && cur.indexOf(str) == -1 && wzcur.indexOf(str) == -1){ ary.splice(k, 1) k--; } }else { if (cur.indexOf(str) == -1 && wzcur.indexOf(str) == -1) { //如果不匹配 ary.splice(k, 1) k--; } } } }, input(e) { // 拿值去匹配,匹配不上的刪除,刪除時判斷必須為末端,例如3級有匹配,2級的匹配不上,但不能刪除,3級兄弟的匹配不上可以刪除, // 2級符合刪除的條件為:匹配不上並且為末端,當3級全部刪除完2級為空陣列時可以刪,判斷length // 2級刪除要等3級迴圈完,判斷是否為空了 let str = e.target.value; let ary = deepClone(this.oldList); this.factorial(ary,str); // for(let i_1=0;i_1<ary.length;i_1++){ // let cur1 = ary[i_1].Item_Code; // let wzcur1 = ary[i_1].Item_Name; // //得到當前項的子集,2級 // let cur1Child = ary[i_1].ChildList; // //如果2級存在,遍歷2級 // if (cur1Child.length != 0) { // // for(let i_2=0; i_2<cur1Child.length; i_2++){ // let cur2 = cur1Child[i_2].Item_Code; // let wzcur2 = cur1Child[i_2].Item_Name; // // //得到當前項的子集,3級 // let cur2Child = cur1Child[i_2].ChildList; // //如果3級存在,遍歷3級 // if (cur2Child.length != 0) { // // for(let i_3=0;i_3<cur2Child.length;i_3++){ // let cur3 = cur2Child[i_3].Item_Code; // let wzcur3 = cur2Child[i_3].Item_Name; // // //這裡取得子集加迴圈,判斷也要加為空判斷 // if (cur3.indexOf(str) != -1 || wzcur3.indexOf(str) != -1) { // //如果匹配 // } else { // //如果不能匹配刪除自己 // //因為3級是末端,可以直接刪除 // cur2Child.splice(i_3, 1) // i_3--; // } // } // // if(cur2Child.length == 0 && cur2.indexOf(str) == -1 && wzcur2.indexOf(str) == -1){ // //如果子集都被刪除並且父級不能匹配,就不刪 // cur1Child.splice(i_2, 1) // i_2--; // } // // } else { // //如果3級不存在 // if (cur2.indexOf(str) != -1 || wzcur2.indexOf(str) != -1) { // //如果匹配 // } else { // cur1Child.splice(i_2, 1) // i_2--; // } // } // } // // if(cur1Child.length == 0 && cur1.indexOf(str) == -1 && wzcur1.indexOf(str) == -1){ // ary.splice(i_1, 1) // i_1--; // } // // } else { // //如果2級不存在 // if (cur1.indexOf(str) != -1 || wzcur1.indexOf(str) != -1) { // //如果匹配 // } else { // ary.splice(i_1, 1) // i_1--; // } // } // } this.list = ary; //console.log(this.list) }, getData() { let ary1 = [ { ChildList: [ { ChildList: [ { Item_Code: "111", Item_ID: 111, Item_Name: "庫存現金", }, { Item_Code: "1125", Item_ID: 1125, Item_Name: "銀行存款", }, { Item_Code: "113", Item_ID: 113, Item_Name: "存放中央銀行款項", } ], Item_Code: "11", Item_ID: 11, Item_Name: "存放同業", }, { ChildList: [ { Item_Code: "634", Item_ID: 634, Item_Name: "其它貨幣基金", }, { Item_Code: "6353", Item_ID: 63453, Item_Name: "結算備付金", }, { Item_Code: "636", Item_ID: 636, Item_Name: "存出保證金", } ], Item_Code: "44", Item_ID: 44, Item_Name: "拆出資金", }, { ChildList: [ { Item_Code: "777", Item_ID: 777, Item_Name: "交易性金融資產", }, { Item_Code: "77456", Item_ID: 77456, Item_Name: "買入返售金融資產", }, { Item_Code: "779", Item_ID: 779, Item_Name: "應收票據", } ], Item_Code: "77", Item_ID: 77, Item_Name: "應收帳款", } ], Item_Code: "147", Item_ID: 147, Item_Name: "預付帳款", }, { ChildList: [ { ChildList: [ { Item_Code: "999", Item_ID: 999, Item_Name: "應收股利", }, { Item_Code: "998", Item_ID: 998, Item_Name: "應收利息", }, { Item_Code: "997", Item_ID: 997, Item_Name: "應收保護儲金", } ], Item_Code: "99", Item_ID: 99, Item_Name: "應收代位追償款", }, { ChildList: [ { Item_Code: "666", Item_ID: 666, Item_Name: "應收分保帳款", }, { Item_Code: "665", Item_ID: 665, Item_Name: "其它應收款", }, { Item_Code: "664", Item_ID: 664, Item_Name: "壞帳準備", } ], Item_Code: "66", Item_ID: 66, Item_Name: "貼現資產", }, { ChildList: [ { Item_Code: "333", Item_ID: 333, Item_Name: "貸款", }, { Item_Code: "332", Item_ID: 332, Item_Name: "貸款損失準備", }, { Item_Code: "331", Item_ID: 331, Item_Name: "代理兌付證券", } ], Item_Code: "33", Item_ID: 33, Item_Name: "材料採購", } ], Item_Code: "963", Item_ID: 963, Item_Name: "在途物資", }, { ChildList: [ { ChildList: [ { Item_Code: "336699", Item_ID: 336699, Item_Name: "原材料", }, { Item_Code: "225588", Item_ID: 225588, Item_Name: "庫存商品", }, { Item_Code: "114477", Item_ID: 114477, Item_Name: "發出商品", } ], Item_Code: "123", Item_ID: 123, Item_Name: "週轉材料", }, { ChildList: [ { Item_Code: "115599", Item_ID: 115599, Item_Name: "貴金屬", }, { Item_Code: "335577", Item_ID: 335577, Item_Name: "抵債資產", }, { Item_Code: "446655", Item_ID: 446655, Item_Name: "損餘物資", } ], Item_Code: "456", Item_ID: 456, Item_Name: "待攤費用", }, { ChildList: [ { Item_Code: "786", Item_ID: 786, Item_Name: "獨立帳戶資產", }, { Item_Code: "453", Item_ID: 453, Item_Name: "長期應收款", }, { Item_Code: "168", Item_ID: 168, Item_Name: "固定資產", } ], Item_Code: "555", Item_ID: 555, Item_Name: "累計折舊", } ], Item_Code: "226", Item_ID: 226, Item_Name: "在建工程", }, ]; this.list = ary1; this.oldList = ary1; }, } }) //陣列深度克隆 function (obj) { let newObj = Array.isArray(obj) ? [] : {} if (obj && typeof obj === "object") { for (let key in obj) { if (obj.hasOwnProperty(key)) { newObj[key] = (obj && typeof obj[key] === 'object') ? deepClone(obj[key]) : obj[key]; } } } return newObj }