算法整理

作者: 翻滚的前端程序员 | 来源:发表于2017-04-10 18:31 被阅读30次

    1.数组去重 ( indexOf , set-es6)

    indexOf 方法
    function tt(arr) {
        var newarr = [];
        arr.map(function(val) {
            if(newarr.indexOf(val) === -1) {
                newarr.push(val)
            }
        })
        return newarr;
    }
    
    set 方法
    function tt(arr) {
        return Array.from(new Set(arr))
    }
    
    二维数组去重
    function unique(arr){
        var r = [];
        arr.forEach(function(item) {
        if(Array.isArray(item)) {
            item.forEach(function(val) {
                if(r.indexOf(val) === -1) {
                r.push(val)
            }
        })
            }else {
                if(r.indexOf(item) === -1) {
            r.push(item)
            }
            }
        })
        return r;
    }
    

    2.数组每limit个数求一下和,最后不满limit个数的元素舍弃

    function tt(arr,limit) {
        var sum = [];
        var s = 0;
        for (var i = 0; i < arr.length; i++) {
            s = s + arr[i];
            if( (i+1) % limit === 0) {
                sum.push(s);
                s = 0;
            }
        }
        return sum;
    }
    

    3.将数组中与Key相等的值移动到第一位

    function(arr,key) {
        arr.map(function(val,index){
            if(val === key) {
                arr.splice(index,1)
            }
            arr.unshift(key);
            return arr;
        })
    }
    

    4. 找出数组中出现重复的数字

    function repeat(arr) {
        var r = [];
        for(var i = 0 ; i < arr.length; i++) {
            if(arr.indexOf(arr[i]) != arr.lastIndexOf(arr[i])) {
                if(r.indexOf(arr[i]) === -1) {
                    r.push(arr[i])
                }
            }
        }
        return r;
    }
    

    5. 实现一个打点计时器(来�自����牛客网),要求

    1、从 start 到 end(包含 start 和 end),每隔 100 毫秒 console.log 一个数字,每次数字增幅为 1
    2、返回的对象中需要包含一个 cancel 方法,用于停止定时操作
    3、第一个数需要立即输出

    function t(start,end) {
        var timer = null;
        console.log(start);
        timer = setInterval(function() {
            if(start<end) {
                console.log(++start)
            }else {
                clearInterval(timer)
            }
        },100);
        return {
            cancel: function() {
                clearInterval(timer)
            }
        }
    }
    

    6. 求出数组中的最大最小值

    利用Math.max,Math.min

    function maxAndMin(arr) {
        var min,
            max;
        min = Math.max.apply(Math, arr);
        max = Math.min.apply(Math, arr);
        return 'Max is:' + max + ', min is:' + min;
    }
    
    maxAndMin([7,2,3,8,9])  // Max is:2, min is:9
    

    相关文章

      网友评论

        本文标题:算法整理

        本文链接:https://www.haomeiwen.com/subject/mxheattx.html