1. 程式人生 > >JavaScript簡單實現表示式查詢陣列

JavaScript簡單實現表示式查詢陣列

你還在用for迴圈嗎?

由於每次在查詢陣列的時候都是用的for迴圈遍歷查詢,很煩 , 要是能像C#那樣用一個表示式查詢就好了, 就在這個特別糾結的時候,

頭腦中突然靈光一閃,是不是該去上個WC了,果然回來之後我想到的eval這個函式,對,一定行的,思路很特別,

平時我們一般用eval僅僅是把解析JSON字串而已,現在才知道真的是殺雞用牛刀了

這樣的話就可以跳過那複雜的語法解析了,哈哈,太簡單了,每個變數在作用域內使用eval這個函式是能夠訪問到這個變數的,

下面是幾行簡單的程式碼 

 

  var list = [
            { name: "張三", age: 18, isOut: false },
            { name: "李四", age: 20, isOut: true },
            { name: "老五", age: 20, isOut: false },
            { name: "老六", age: 21, isOut: false }
        ];

        function where(array, express) {
            if (arguments.length > 2) {
                //合成express
                var c = 0;
                for (var i = 2; i < arguments.length; i++) {
                    express = express.replace("{" + c + "}", arguments[i].toString());
                    c++;
                }
            }
            var result = new Array();
            //解析表示式
            for (var i = 0; i < array.length; i++) {
                var p = array[i];
                var resu = eval(express);
                if (resu) {
                    result.push(p);
                }
            }
            return result;
        }
        var list1 = where(list, "p.name=='張三' && p.age > 10 ");
        var list2 = where(list, "p.name.indexOf('老') > -1 && p.age>=20 ");
        var list3 = where(list, "p.name == '{0}' && p.age == {1}", "張三", 18);
        console.log(list1);
        console.log(list2);