前端面试算法题汇总(持续更新...)

1.判断一段字符串是否为回文?
回文是指把相同的词汇或句子,在下文中调换位置或颠倒过来,产生首尾回环的情趣,叫做回文,也叫回环。比如 abba,redder…
1.字符串转数组;2.用reverse()函数颠倒;3.使用join(’’)拼接成字符串

function reverseFn( str ) {
	return str == str.split(',').reverse().join('')
}

2.数组去重
1.直接双重遍历

 var arr = [1,2,3,3,4,3,5,3,7,5];
  function removeRepetition(arr) {
     for(var i = 0; i < arr.length-1; i++){
         for(var j = i+1; j < arr.length; j++){
             if(arr[i]==arr[j]){
               arr.splice(j,1);//console.log(arr[j]);
                j--;
            }
        }
    }
    return arr; 
}

2.用indexOf()方法

var arr = [1,2,3,3,4,3,5,3,7,5];
var arr1 = [];
function removeRepetition(arr) {
	for(var i = 0;i < arr.length; i++) {
		if(arr1.indexOf(arr[i]) == -1){
			arr1.push(arr[i])
		}
	}
	return arr1;
}

3.用fifter方法

var arr = ['apple','strawberry','banana','pear','apple','orange','orange','strawberry'];
var r = arr.filter(function(element,index,self){
    return self.indexOf(element) === index;
 });
 console.log(r);

4.使用ES6的Set

const removeDuplicateItems = arr => [...new Set(arr)];
removeDuplicateItems([42, 'foo', 42, 'foo', true, true]);

3.对象去重

var arr = [{
      key: '01',
       value: '乐乐'
    }, {
       key: '02',
       value: '博博'
    }, {
       key: '03',
       value: '淘淘'
   },{
       key: '04',
      value: '哈哈'
   },{
      key: '01',
      value: '乐乐'
   }];


var result = [];
   var obj = {};
   for(var i =0; i

4.统计一个字符串出现最多的字母

var str = "aaabbbbccc"; 
function findMaxDuplicateChar(str) {  
  if(str.length == 1) {
    return str;
  }
  let charObj = {};
  for(let i=0;i= maxValue) {
      maxChar = k;
      maxValue = charObj[k];
    }
  }
  return maxChar;

}
findMaxDuplicateChar(str)

5.排序算法

function bubbleSort(arr) {  
    for(let i = 0,l=arr.length;iarr[j]) {
                let tem = arr[i];
                arr[i] = arr[j];
                arr[j] = tem;
            }
        }
    }
    return arr;
}

6.判断js中的数据类型方法
js中共有七种数据类型 ES6新增Symbo,其中除去 undefined; null ; 0 ; NaN; ’ ';为false 其他都为 true
1)typeof 方法

var obj = {'age':'14'}
var arr = ['a','b','c']
var str = 'hello'
var bool = true
var num = 1
var n = null
var fn = function(n){
        console.log(n)
    }
	
console.log(typeof obj)    // object
console.log(typeof arr)    // object
console.log(typeof str)    // string
console.log(typeof bool)    // boolean
console.log(typeof num)    // number
console.log(typeof n)    // object
console.log(typeof fn)    // function

由上可知,typeof方法 不能区分 Array 和 Object
2) instanceof

var obj = {'age':'14'}
var arr = ['a','b','c']
var str = 'hello'
var bool = true
var num = 1
var n = null
var fn = function(n){
        console.log(n)
    }
console.log(obj instanceof Object)  // true
console.log(arr instanceof Array)    // true
console.log(str instanceof String)    // false
console.log(bool instanceof Boolean)    // false
console.log(num instanceof Number)    // false
console.log(n instanceof Object)    // false
console.log(fn instanceof Function)    // true

由上可知,instanceof 方法只能判断 Object 和 Array 原始数据类型的值无法判断
此方法也不能很好地区分Array和Object

var arr = [1,2,3,4];
arr.instanceof Object

此结果也为true
3) constructor 方法

var obj = {'age':'14'}
var arr = ['a','b','c']
var str = 'hello'
var bool = true
var num = 1
var n = null
var fn = function(n){
        console.log(n)
    }
console.log(obj.constructor == Object)  // true
console.log(arr.constructor == Array)  // true
console.log(str.constructor == String)  // true
console.log(bool.constructor == Boolean)  // true
console.log(num.constructor == Number)  // true
console.log(fn.constructor == Function)  // true
4) toString() 方法 
var obj = {'age':'14'}
var arr = ['a','b','c']
var str = 'hello'
var bool = true
var num = 1
var n = null
var fn = function(n){
        console.log(n)
    }
console.log(Object.prototype.toString.call(obj))    // [object Object]
console.log(Object.prototype.toString.call(arr))    // [object Array]
console.log(Object.prototype.toString.call(str))    // [object String]
console.log(Object.prototype.toString.call(bool))    // [object Boolean]
console.log(Object.prototype.toString.call(num))    // [object Number]
console.log(Object.prototype.toString.call(n))    // [object Null]
console.log(Object.prototype.toString.call(fn))    // [object Function]

推荐使用 toString() 方法!

你可能感兴趣的:(面试,js)