關於陣列的前端面試題
、如何判斷乙個變數是否為陣列?
)為什麼不用
typeof
var list = [1,2,3];
typeof list
//"object"
array
繼承與object
,所以typeof
會直接返回
object
,所以不可以用
typeof
方法來檢測
)為什麼不用
instanceof?
var list = [1,2,3];
list instanceof array
//true
instanceof
表面上看確實是返回了
true
,但其實並不可靠。原因是
array
實質是乙個引用,用
instanceof
方法(包括下面的
constructor
方法)都是利用和引用位址進行比較的方法
來確定的,但是在
frame
巢狀的情況下,每乙個
array
的引用位址都是不同的,比較起來結
果也是不確定的,所以這種方法有其侷限性。
)為什麼不用
constructor
方法?var list = [1,2,3];
list.constructor === array;
//true
原因已經解釋過了,不再贅述。
可靠的檢測陣列方式
)利用object
的tostring
方法var list = [1,2,3];
object.prototype.tostring.call(list);
//[object array]
)利用es6
的array.isarray()
方法var list = [1,2,3];
array.isarray(list);
//true
、陣列的原生方法有哪些?
一是考察面試者平時使用的是否足夠平凡;
二是觀察面試者是否對於日常的知識有所歸
納。可以用
mdn中給出的方式來回答:
)會改變自身的方法
array.prototype.copywithin()
在陣列內部,將一段元素序列拷貝到另一段元素序列上,
覆蓋原有的值。
array.prototype.fill()
將陣列中指定區間的所有元素的值,都替換成某個固定的值。
array.prototype.pop()
刪除陣列的最後乙個元素,並返回這個元素。
array.prototype.push()
在陣列的末尾增加乙個或多個元素,並返回陣列的新長度。
array.prototype.reverse()
顛倒陣列中元素的排列順序,即原先的第乙個變為最後乙個,
原先的最後乙個變為第乙個。
array.prototype.shift()
刪除陣列的第乙個元素,並返回這個元素。
array.prototype.sort()
對陣列元素進行排序,並返回當前陣列。
array.prototype.splice()
在任意的位置給陣列新增或刪除任意個元素。
array.prototype.unshift()
在陣列的開頭增加乙個或多個元素,並返回陣列的新長度。
Js前端面試題
1.判斷js型別的方法 1 typof 2 可以判斷出 string boolean undefiend number 3 但是判斷typeof null 時值為object 判斷物件陣列的時候也是object object.prototype.tostring.call 可以判斷出所有型別 arr...
前端面試題 Js
1.原型 原型鏈 建構函式 例項 繼承 原型 proto 原型物件 prototype 用作建構函式中有prototype 原型物件 例項中有 proto 2.有幾種方式可以實現繼承 原型繼承,構造繼承,例項繼承,拷貝繼承,組合繼承,寄生組合繼承,class繼承 3.用原型實現繼承有什麼缺點,如何解...
array 前端面試題 前端面試中的常見的演算法問題
雖說我們很多時候前端很少有機會接觸到演算法。大多都互動性的操作,然而從各大公司面試來看,演算法依舊是考察的一方面。實際上學習資料結構與演算法對於工程師去理解和分析問題都是有幫助的。如果將來當我們面對較為複雜的問題,這些基礎知識的積累可以幫助我們更好的優化解決思路。下面羅列在前端面試中經常撞見的幾個問...