前端筆試題合集
阿新 • • 發佈:2019-02-10
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水平垂直方向居中。