web前端总结面试问题<经常遇到的手写代码 - - >(二)

冒泡排序
var arr = [5,8,3,6,9]
	for(var i=0;i<arr.length;i++){
	 for(var j=i+1;j<arr.length;j++){
	 	 if(arr[i]>arr[j]){
	 	 	var temp
	 	 	temp=arr[i];
	 	 	arr[i]=arr[j];
	 	 	arr[j]=temp;
		 	 }

		 }
	}
	 console.log(arr)
//temp是中间变量,把要交换的第一个元素arr[j]赋值给中间变量,也是把第一个元素存储起来
//第二个元素赋值给第一个元素,因为第一个元素我们已经存储在中间变量中了,所以我们不用担心它的值会被覆盖掉
//temp存储了第一个元素的值,把它赋值给第二个元素,就是把第一个元素赋值给第二个元素了,到这一步,两个元素已经交换位置了
编程实现IndexOf方法
	var brr=[5,9,6,3,2,5];
		function indexfun(arr,val){
			for(var i=0;i<arr.length;i++){
				if(arr[i]==val){
					return i;
				}
			}
			return -1;
		}
		console.log(indexfun(brr,13));
写一个方法实现parseInt函数 将字符串转化成整型
function _parseInt(str, radix) {
        let str_type = typeof str;
        let res = 0;
        if (str_type !== 'string' && str_type !== 'number') {
        // 如果类型不是 string 或 number 类型返回NaN
            return NaN
        }
        // 字符串处理
        str = String(str).trim().split('.')[0]
        let length = str.length;
        if (!length) {
            // 如果为空则返回 NaN
            return NaN
        }
        if (!radix) {
            // 如果 radix 为0 null undefined
            // 则转化为 10
            radix = 10;
        }
        if (typeof radix !== 'number' || radix < 2 || radix > 36) {
            return NaN
        }
        for (let i = 0; i < length; i++) {
            let arr = str.split('').reverse().join('');
            res += Math.floor(arr[i]) * Math.pow(radix, i)
        }
        return res;
    }
编写一个函数,将url后的参数串解析成hash形式的对象、
var url = "http://www.taobao.com/index.php?key0=0&key1=1&key2=2...";
        var obj = parseQueryString(url);
        console.log(obj)
        function parseQueryString(argu){
          var str = argu.split('?')[1];
          var result = {};
          var temp = str.split('&');
          for(var i=0; i<temp.length; i++){
            var temp2 = temp[i].split('=');
            result[temp2[0]] = temp2[1];
          }
          return result;
        }
将首字母大写
function titleCase(str){
            var a = str.toLowerCase().split(' ');
            var b = a.map(function(val){return val.replace(val.charAt(0),val.charAt(0).toUpperCase())})
            return b.join(' ');
        }

  

求二维数组所有数的和(封装函数)
function sum(arr){
  var total=0;
  for(var i=0;i<arr.length;i++){
    for(var j=0;j<arr[i].length;j++){
      total+=arr[i][j]
    }
  }
  return total;
}
编写一个方法 求一个字符串的字节长度
假设: 
一个英文字符占用一个字节,一个中文字符占用两个字节 
function GetBytes(str){
    var len = str.length;
    var bytes = len;
    for(var i=0; i<len; i++){
        if (str.charCodeAt(i) > 255) bytes++;
    }
    return bytes;
}
alert(GetBytes("你好,as"));
编写一个方法 去掉一个数组的重复元素 
var arr = [1 ,1 ,2, 3, 3, 2, 1];
Array.prototype.unique = function(){
    var ret = [];
    var o = {};
    var len = this.length;
    for (var i=0; i<len; i++){
        var v = this[i];
        if (!o[v]){
            o[v] = 1;
            ret.push(v);
        }
    }
    return ret;
};
alert(arr.unique());

  未完待续>>>

温故而知新~

猜你喜欢

转载自www.cnblogs.com/yangsg/p/10149829.html