1

常见js算法

1.比较两个数组

Array.prototype.diff = function(a) {
    return this.filter(function(i) {return a.indexOf(i) < 0;});
};

////////////////////  
// Examples  
////////////////////

[1,2,3,4,5,6].diff( [3,4,5] );  
// => [1, 2, 6]

["test1", "test2","test3","test4","test5","test6"].diff(["test1","test2","test3","test4"]);  
// => ["test5", "test6"]

2.数组去重

    var arr = ['a', 'b', 'c', '1', 0, 'c', 1, '', 2,1, 0];
/*    function unique(){
        var ret = [];
        for(var i =0; i<arr.length;i++){
            var item = arr[i];
            if(ret.indexOf(item) === -1){   // IE6-IE8以下没有indexof()方法。
                ret.push(item);
            }
        }
        return ret;
    }*/

    function unique(){
        var ret = [];
        var hash = {};
        for (var i = 0; i < arr.length; i++) {
            var item = arr[i];
            var key =typeof(item)+item;
            if(hash[key] != 1){
                ret.push(item);
                hash[key] = 1;
            }
        };
        return ret
    }

3.数组从小到大排序

    var arr = [1,0,10,3,5,6,2];
    arr.sort(function(a,b){
        return a - b;  //从小到大排序
    })

4. 10秒倒计时定时器

    var seconds = 10;
    var timeAlarm = setInterval(showTime,1000);
    function showTime(){
        seconds -= 1;
        console.log(seconds);
        if (seconds == 0) {
            clearInterval(timeAlarm);
        };
    };

5.快速排序

快排的思想:  

  1. 在数据集之中,选择一个元素作为"基准"(pivot)。

  2. 所有小于"基准"的元素,都移到"基准"的左边;所有大于"基准"的元素,都移到"基准"的右边。

  3. 对"基准"左边和右边的两个子集,不断重复第一步和第二步,直到所有子集只剩下一个元素为止。
    快排最坏时间O(n2),最好时间O(nlgn)

    function quickSort(arr){
        if(arr.length <= 1){ return arr;}
        var pivotIndex = Math.floor(arr.length / 2);
        var pivot = arr.splice(pivotIndex,1)[0];
        var left = [] ,right =[];
        for(var i = 0;i<arr.length;i++){
            if(arr[i] > pivot){
                right.push(arr[i]);
            }else{
                left.push(arr[i]);
            }
        };
        return quickSort(left).concat([pivot],quickSort(right));
    };
    var data =[85,24,63,45,17,31,96,50];
    console.log( quickSort(data) );

6.随机选取从10-100的10个数字。

        var iArray =[];
        function getRandom(iStart,iEnd){
            var iChoice = iStart-iEnd+1;
            return Math.abs(Math.floor(Math.random()*iChoice))+iStart;
        }
        for(var i=0;i<10;i++){
            iArray.push(getRandom(0,10))
        };

7.去掉字符串中所有空格(包括中间空格,需要设置第2个参数为:g)

        function Trim(str,is_global)
        {
            var result;
            result = str.replace(/(^\s+)|(\s+$)/g,"");
            if(is_global.toLowerCase()=="g")
            {
                result = result.replace(/\s/g,"");
             }
            return result;
}

bulinin
138 声望4 粉丝

分享,学习,进步~~~