1. 程式人生 > >前端筆試題合集

前端筆試題合集

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.9function 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水平垂直方向居中。