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);