算法整理

1.數(shù)組去重 ( 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))
}

二維數(shù)組去重
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.數(shù)組每limit個數(shù)求一下和,最后不滿limit個數(shù)的元素舍棄

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.將數(shù)組中與Key相等的值移動到第一位

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

4. 找出數(shù)組中出現(xiàn)重復(fù)的數(shù)字

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. 實現(xiàn)一個打點計時器(來?自??????途W(wǎng)),要求

1、從 start 到 end(包含 start 和 end),每隔 100 毫秒 console.log 一個數(shù)字,每次數(shù)字增幅為 1
2、返回的對象中需要包含一個 cancel 方法,用于停止定時操作
3、第一個數(shù)需要立即輸出

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. 求出數(shù)組中的最大最小值

利用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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容