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);
原文地址:https://www.cnblogs.com/wang-juan/p/6769609.html