1. 程式人生 > 實用技巧 >Elasticsearch 之全文檢索與倒排索引

Elasticsearch 之全文檢索與倒排索引

    //定義柯里化函式
    function curry(fn) {
    //定義一個空陣列
        var arr = [];
        //閉包,返回一個匿名函式
        return function () {
        //如果引數的長度等於0時(就是不填引數,如下面的fns())
            if (arguments.length === 0) {
            //返回fn的執行結果到列印fns()中----下面return的結果帶到這裡
                return fn.apply(null, arr);
            }
            //如果引數的長隊不等於0時,將引數以陣列的形式新增到空陣列中
            arr = Array.prototype.concat.apply(arr, arguments);
            // var arr1=Array.prototype.slice.call(arguments);//ES5中寫法
            // var arr1=Array.from(arguments);//Es6中才有的寫法
            // arr=arr.concat(arr1);與上面註釋的第一條合起來與上面的arr=Array....作用相同    
       }
    }
    //定義求和的函式
    function getSum() {
        //返回 將引數帶入陣列中並且歸併
        return Array.prototype.reduce.call(arguments, function (sum, item) {
            return sum + item;
        });
        // var arr=Array.from(arguments);
        // var sum=arr.reduce(function(sum,item){
            // return sum+item;
        // });
        // return sum; 註釋部分等同於上面的return Array.....
    }
    //定義fns 是 curry中帶入getsum
    var fns = curry(getSum);
    fns(1);
    fns(10);
    fns(12);
    fns(15, 16);
    fns(15, 16, 18);
    //列印 fns();的執行結果
    console.log(fns());//103