算法整理

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.jianshu.com/p/0cf2c8a4901b
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞