js面试常见算法题

数组去重

var arr = [1,2,3,4,4,2,2,6,9,1,0];
var newArr = [];
var onOff = true;
for(var i = 0;i{ //把arr的信息统计到obj里面
    if(obj[e]===undefined){ //其实是利用对象属性是否存在做了一层遍历
        obj[e] = 1
    }else{
        obj[e]++
    }
});
console.log(Object.keys(obj))

洗牌算法

function shuffle(arr) {
    var i = arr.length, t, j;
    while (i) {
        j = Math.floor(Math.random() * i--);  //生成数组的随机index
        t = arr[i]; //
        arr[i] = arr[j];
        arr[j] = t;
    }
    console.log(arr)
}
var arr = [1, 3, 5, 7, 9]
shuffle(arr)

写一个函数,统计字符串里出现出现频率最多的字符

var str = 'abcdefffdddddd';
var obj={};
for(var i=0;i max){
        max = obj[key];
        tKey = key;
    }
}
console.log(tKey)

冒泡排序

function bubbleSort(arr) {
    var len = arr.length;
    for (var i = 0; i < len; i++) {
        for (var j = 0; j < len - 1 - i; j++) {
            if (arr[j] > arr[j+1]) {        //相邻元素两两对比
                var temp = arr[j+1];        //元素交换
                arr[j+1] = arr[j];
                arr[j] = temp;
            }
        }
    }
    return arr;
}
var arr=[3,44,38,5,47,15,36,26,27,2,46,4,19,50,48];
console.log(bubbleSort(arr));//[2, 3, 4, 5, 15, 19, 26, 27, 36, 38, 44, 46, 47, 48, 50]

你可能感兴趣的:(js面试常见算法题)