面试总结函数封装

一、字符串翻转

function reverse(str){
	var arr=str.split("");
	arr.reverse();
	console.log(arr.join(""));
} 
	var str="hellow";
	reverse2(str);
function reverse2(str){
	var s="";
	for (var i = 1; i <=str.length; i++) {
		var o=str.charAt(str.length-i);
		s+=o;
	}
	console.log(s);
}

二、闭包

for (var i = 0; i < 10; i++) {
   setTimeout(
	function(){
	console.log(i);
   },0);
}
console.log(i); 

三、统计字符串中字母个数或统计最多字母数

var str = "aaaaaabbbccccddfgh";
function countString(str){
	var obj = {};
	for(var i = 0; i < str.length; i++) {
	   var v = str.charAt(i);
		if(obj[v] && obj[v].value == v) {
//			obj[v].count = ++obj[v].count;
			obj[v].count++;
		} else {
		        obj[v] = {};
			obj[v].count = 1;
			obj[v].value = v;
	   }
	}
		for(key in obj) {
			document.write(obj[key].value + '=' + obj[key].count + ' '); 
		}
		document.write(obj.a.value);
}
countString(str);// a=4  b=3  c=4  d=2  f=1  g=1  h=1

四、数组去重

arrqc=[1,1,2,2,3,4,5,8,7,5,4,6,6];
function quChong(arr){
	var arrNew=[];
	    for (var i = 0; i < arr.length; i++) {
		if(arrNew.indexOf(arr[i])==-1){//没有找到
		arrNew.push(arr[i]);
	    }
	}
	document.write("<br />"+arrNew+"<br />");
}
quChong(arrqc);
function quChong2(array){
	 return Array.from(new Set(array));
}

五、骆驼命名法

function name(strname){
	var arr=strname.split("-");
	for (var i = 1; i < arr.length; i++) {
		arr[i]=arr[i].charAt(0).toUpperCase()+arr[i].substr(1);
        }
	document.write(arr.join("_")+"<br />");
}
name(strname);

六、冒泡排序

arrmp=[8,5,9,7,1,3,4,6,2,"C","A","B"];
function maoPao(arr){
	for (var i = 0; i < arr.length-1; i++) {
		for (var j = 0; j < arr.length-i-1; j++) {
			if(arr[j]>arr[j+1]){
				var temp=arr[j+1];
				arr[j+1]=arr[j];
				arr[j]=temp;
			}
		}
	}
	document.write(arr+"<br />");
}
maoPao(arrmp);

七、实现一个函数clone,可以对JavaScript中的5种主要的数据类型(包括Number、String、Object、Array、Boolean)进行值复制。

function clone(obj){
	var o;
	switch (typeof obj){
		case "undefined":
			break;
		case "string":
			o=obj+"";
			break;
		case "number":
			o=obj+0;
			break;
		case "boolean":
			o=obj;
			break;
		case "object": // object 分为两种情况 对象(Object)或数组(Array)
			if(obj===null){
				o=null;
			}else {
			      if (Object.prototype.toString.call(obj).slice(8, -1) === "Array") {//  [object Array]
			              o = [];
			              for (var i = 0; i < obj.length; i++) {
			                   o.push(obj[i]);
			              }
			              } else {
			                   o = {};
			                    for (var k in obj) {
			                        o[k] = clone(obj[k]);
			                    }
			                }
		            	}
		            	break;
				default:
				o=obj;
				break;
	}
	document.write(o+"<br />")
}
			clone({name:"huanyang",age:24});
			clone([1.2,154,1,5]);

八、快速排序

     /*整个排序过程只需要三步: 
      * (1)在数据集之中,选择一个元素作为”基准”(pivot)。 
      * (2)所有小于”基准”的元素,都移到”基准”的左边;所有大于”基准”的元素,都移到”基准”的右边。
      * (3)对”基准”左边和右边的两个子集,不断重复第一步和第二步,直到所有子集只剩下一个元素为止
      * */
			var quickSort = function(arr) {
			  if (arr.length <= 1) { return arr; }
			  var pivotIndex = Math.floor(arr.length / 2);//floor:取不大于x的最大整数;ceil:取不小于x的最小整数;
			  var pivot = arr.splice(pivotIndex, 1)[0];//返回被删除元素的新数组,即基准元素
			  var left = [];
			  var right = [];
			  for (var i = 0; i < arr.length; i++){
			    if (arr[i] <pivot) {
			      left.push(arr[i]);
			    } else {
			      right.push(arr[i]);
			    }
			  }
			  return quickSort(left).concat([pivot], quickSort(right));
			};
	        document.write(quickSort([4,8,5,6,1,2,3,7,9]));

九、写一个function,清除字符串前后的空格。字符串中的所有空格(兼容所有浏览器)

function trim(str){
    return str.replace(/(^\s*)|(\s*$)|(\s*)/g,"")
}

十、变量提升

var x=10;
var y=10;
function tets(){
   console.log(x);
   console.log(y);
   var x=5;				
}
tets();//变量提升
发布了41 篇原创文章 · 获赞 10 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/sinat_35656188/article/details/79260977
今日推荐