• JavaScript面试编程题


    JS 面试编程题

    1、冒泡排序(封装一个冒泡排序的函数)

    function sorts(arr){
      for(var i = 0; i < arr.length-1; i++){
        for(var j = 0; j < arr.length-1-i; j++ ){
          if(arr[j] > arr[j+1]){
            var temp = arr[j];
            arr[j] = arr[j+1];
            arr[j+1] = temp;
          }
        }
      }
      return arr;
    }
    
    var arr=['3','7','1','9','2','8'];
    console.log(sorts(arr));
    

    2、截取URL地址栏的参数

    function params(url){
      var str = url.split('?')[1];
      var items = str.split('&');
      var json = {};
      for(var i = 0; i < items.length; i++){
       var arr = items[i].split('=') ;
       json[arr[0]]=arr[1];
      }
      return json;
    }
    
    var url='http://baidu.com?a=11&b=22&c=33';
    console.log(params(url));
    

    3、点击Button3,输出的是什么

    //输出项为5
    for(var i=0;i<5;i++){
      var btn=document.creatElement('button');
      btn.appendChild(document.createTextNode('Button'+i));
      document.body.appendChild(btn);
    }
    

    4、计算求和sum(2,3)和sum(2)(3);

    function sum(){
      if(arguments>1){
        return arguments[0]+arguments[1];
      }else{
        var a=arguments[0];
        return function(x){
          return a + x;
        }
      }
    }
    console.log(sum(2,3));
    console.log(sum(2)(3));
    //输出都为5,判断参数个数,若大于1,则两个参数相加,
    //如果参数为1,则先保存第一个参数,再返回回调函数将第二个参数作为参数。相加即为求和结果
    

    5、数组去重

    使用indexOf,但是IE8不兼容

    function select(arr){
      var temp=[];
      for(var i = 0;i < arr.length;i++){
      	//indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。
        if(temp.indexOf(arr[i]) == -1){
          temp.push(arr[i]);
        }
      }
      return temp;
    }
    //具体验证
    var arr=[4,5,1,53,5,1,3];
    console.log(select(arr));
    

    使用ES6中的includes方法 (箭头函数)

    //includes():判断当前数组是否包含某个值,若有则返回true,若没有则返回false;
    function select(arr){
      var temp=[];
      arr.forEach((v)=>{
        temp.includes(v)||temp.push(v);
      })
      return temp;
    }
    

    利用循环的方法

    function select(arr){
      var temp=[];
      for(var i = 0; i < arr.length; i++){
        for(var j = i+1; j < arr.length; j++){
          if(arr[i] === arr[j]){
            j = ++i;
          }
        }
        temp.push(arr[i]);
      }
      return temp;
    }
    

    6、判断是否是一个数组

    if(typeof Array.isArray==='undefined'){
      Array.isArray=function(arg){
        return Object.prototype.tostring.call(rag)==='[Object Array]';
      };
    }
    

    7、获取到页面中所有的checkbox

    var domList = document.getElementsByTagName('input');
    var checkBoxList=[];
    var len=domList.length;
    while(len--){
      if(domList[len].type=='checkbox'){
        checkBoxList.push(domList[len]);
      }
    }
    

    8、驼峰命名的写法

    function combo(msg){
      var arr=msg.split('-');
      for(var i=1;i<arr.length;i++){
        arr[i]=arr[i].charAt(0).toUpperCase()+arr[i].substr(1,arr[i].length-1);
      }
      return (arr.join(''));
    }
    

    9、获取当前日期

    var time=new Date();
    var year=time.getFullYear();
    
    var month=time.getMonth()+1;
    month=month>10?month:'0'+month;
    
    var day=time.getDate();
    
    console.log(year+'--'+month+'--'+day);
    
  • 相关阅读:
    request常用的方法
    JS通过正则限制 input 输入框只能输入整数、小数(金额或者现金)
    基于云原生的秒杀系统设计思路
    html<input>输入框中各种正则表达式设置
    cursor:hand与cursor:pointer的区别介绍
    读入/输出优化
    手动扩栈,防止溢出
    快速乘(O(1))
    二分图若干性质
    康拓展开
  • 原文地址:https://www.cnblogs.com/wang-juan/p/6769609.html
Copyright © 2020-2023  润新知