前端笔试题合集

1、

var arr=[1,2,3,4,5];
arr.splice(1,2,3,4,5);


输出:[ 1, 3, 4, 5, 4, 5 ]

2、

多维数组转一位数组:原题:[1,[2,3]] ==》 [1,2,3]

var func=function(arr){
    if(Object.prototype.toString.call(arr)!=="[object Array]"){
        return;
    }
        var newArr=[];
        var f=function(arr){
            for(var i=0,len=arr.length;i<len;i++){
                if(arr[i].length){
                    f(arr[i]);
                }else{
                    newArr.push(arr[i]);
                }
            }
        }
    f(arr);
    return newArr;
}

使用toString()方法来检测对象类型f  (注意大小写)

可以通过toString() 来获取每个对象的类型。为了每个对象都能通过 Object.prototype.toString() 来检测,需要以 Function.prototype.call() 或者 Function.prototype.apply() 的形式来调用,把需要检测的对象作为第一个参数传入。

var toString = Object.prototype.toString;

toString.call(new Date); // [object Date]
toString.call(new String); // [object String]
toString.call(Math); // [object Math]

//Since JavaScript 1.8.5
toString.call(undefined); // [object Undefined]
toString.call(null); // [object Null]
判断多维数组:

if(arr[i].length)

3、

// 把字符串转换成驼峰式写法

function func(str){
    var arr=str.split("-");
    for(var i=0,len=arr.length;i<len;i++){
        arr[i]=arr[i].charAt(0).toUpperCase()+arr[i].substring(1);
    }
    return arr.join("");
}
var str = "border-left-color";
string类型也可以用length获取字符串的长度。


使用charAt()获取字符串的单个字符(注意:字符串从左向右=0—length-1)

charAt()只能获取,不能修改字符串

var anyString = "Brave new world";

console.log("The character at index 0   is '" + anyString.charAt(0)   + "'");
The character at index 0 is 'B'

4、

//查找字符串中出现最多的字符和个数
var str =" fdadffddfdffj";
function func(str){
    var obj={};
    for(var i=0,len=str.length;i<len;i++){
        if(!obj[str[i]]){//不存在
            obj[str[i]]=1;
        }else {
            obj[str[i]]++;
        }
    }
    var times=0;
    var strMost="";
    for(var i in obj){
        if(obj[i]>times){
            times=obj[i];
            strMost=i;
        }
    }
    console.log(strMost+":"+times);
}
用for-in遍历非数组对象

5、

//给字符串加千分位
var num = 32123456789.4241; //结果转成千分位表示 123,456,789.9
function func(num) {
    var numStr=num.toPrecision();
    if(numStr.indexOf(".")!==-1){//判断是否为小数
        var newNumStr=func1(numStr.split(".")[0])+"."+numStr.split(".")[1];
    }else{
        var newNumStr=func1(numStr.split(".")[0]);
    }
    function func1(str){
        var length=str.length;
        var newStr="";
        while(length>3){
            newStr=","+str.substring(length-3,length)+newStr;
            length=length-3;
        }
        newStr=str.substring(0,length)+newStr;
        return newStr;
    }
    console.log(newNumStr);
}
func(num);

substring();

split();

indexOf();

6、

// 如何消除一个数组里面重复的元素
var arr=[1,2,3,3,4,4,5,5,6,1,9,3,25,4];
function func(arr) {
    var tempArr=[];
    for(var i=0,len=arr.length;i<len;i++){
        if(tempArr.indexOf(arr[i])===-1){
            tempArr.push(arr[i]);
        }
    }
    console.log(tempArr);
}
func(arr);
7、
var a=2;
var func=(function(){
    var a=3;
    return function(){
       a++;
       alert(a);
    }
})();

func();
func();

A.3,4   B.4,4    C.4,5    D.undefiend undefined

选择C。

匿名函数、作用域。

8、

下面代码执行后,arr的值是

var arr=[{a:1},{}];
arr.forEach(function(item,idx){
  item.b=idx;
});
A.[{a:1},{}]   B.[{a:1,b:0},{b:1}]    C.[{a:1,b:1},{b:1}]   D.[{a:1,b:0},{b:0}]

选择B。

9、

以下代码执行后,a的值是:

var a="HelloWorld".split("").sort().join("");
A."HelloWorld"

B."deHllloorW"

C."roollledWH"

D."HWdellloor"

答案为D

10、

以下代码执行时,alert分别输出什么值

(function(){
    this.a=5;
    alert(window.a);
    var a=1;
    alert(a);
})();
A.undefined,1

B.5,1

C.1,1

D.1,undefined

答案为B

11、

代码一:

var name="people";
function Person(name){
    this.name=name;
}
var p=Person("p1");
代码二:

var name="people";
function Person(name){
    this.name=name;
}
var p=new Person("p2");
请问以上两段代码运行后,name和p的值分别是什么,并描述具体原因。

代码一:name返回”p1“,p返回undefined。

      因为运行person("p1")时在全局作用域,所以内部this指的是全局上下文,所以改变了name的指。

      又因为函数默认返回是undefined所以,p的值为undefined。

代码二:name返回“people”不变,p返回Person的实例对象。

      因为此时的p为Person的一个实例,所以this指代的是p这个实例对象,所以name不变。

12、

写出javascript运行结果:

for(var i=0; i<10; i++){} alert(i);  

结果为10,因为i为全局变量。

13、

用CSS实现一个不定宽高的DIV水平垂直方向居中。













评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值