![]() |
VOOZH | about |
不去面試,你永遠也不知道現在的面試題是些啥樣,仿佛各大公司換著法折騰,對於面試者來說以往的老套路已經完全不夠用了,比如友人一個公司的技術總監,讓他們出了一堆的算法題來面試前端,還有的考驗css/javascript的一些最基礎的底層知識問題,比如,你能用幾種方法創建對象,能用幾種方法對數組去重等一系列的沒有固定答案的題目,這就要求面試者的基本功很紮實,對於那些速成javascript,一上手就學習框架的人群來講,真是沒有半分面子可講。但是如果能把一步一個腳印,把基礎學習紮實,包括對於原生javascript的學習,一步步掰碎來學,那麼這些面試,也就是很簡單了,很多人覺得這樣學習會很慢,但是一份月薪過萬的工作,再怎麼慢,也是值得的。我們既要仰望天空,更應該腳踏實地,下面是一個企業的老猿給新人培訓總結的關於javascript Array對象的一份詳解,希望大家能收藏!
javascript數組創建與修改
1. 創建
var arr = ;
var arr = new Array
Array.of(el1[,el2[...]]) //創建一個新數組實例
Array.from(arrayLike) //將類數組(類似數組的對象和可遍歷的對象)轉為真正的數組。
// ES5的寫法var arr1 = .slice.call(arrayLike); // ES6的寫法let arr2 = Array.from(arrayLike);
2. 合併
Array.prototype.concat(arr1[,arr2..]) //合併兩個或多個數組。不更改現有數組,而是返回一個新數組。
3. 轉化為字符串
Array.prototype.join(separator) //以separator(默認為逗號)拼接為字符串。
Array.prototype.toString //把數組轉換為字符串,數組中的元素之間用逗號分隔。
4. 填充
Array.prototype.fill(value[, start, end]) //用一個固定值填充[start,end)的元素。
判斷數組
Array.isArray //判斷傳遞的值是否是一個 Array。
篩選排序遞歸
1. 篩選
Array.prototype.filter
Array.prototype.map
2. 排序
Array.prototype.reverse //將數組中元素的位置顛倒。
Array.prototype.sort
3. 遞歸
Array.prototype.reduce
語法:arr.reduce(callback,[initialValue])
callback(accumulator,currentValue,currentIndex,array)
accumulator 上一次調用回調返回的值
currentValue 數組中正在處理的元素
currentIndex 數據中正在處理的元素索引
array 調用 reduce 的數組
initialValue [可選],用於第一次調用 callback 的第一個參數。
增刪改查
1. 查找
Array.prototype.some(callback) //執行一次 callback 函數,直到找到一個使得 callback 返回true。
Array.prototype.every(callback) //數組的所有元素是否都通過callback 函數。
Array.prototype.find(callback) //在數組中返回符合callback第一個元素的值。
Array.prototype.findIndex(callback)//返回數組中滿足callback的第一個元素的索引。否則返回-1。
Array.prototype.includes(searchElement) //是否包含一個指定的值
2. 增、刪
Array.prototype.pop //刪除數組最後一個元素,並返回該元素的值。
Array.prototype.push //增加元素到數組末尾。
Array.prototype.shift //刪除數組第一個元素。
Array.prototype.unshift //增加元素到數組開頭。
Array.prototype.slice(start,end) //返回[start,end)**淺拷貝**到一個新數組對象,**原數組不會被修改**。
Array.prototype.splice //通過刪除現有元素和/或添加新元素來更改一個數組的內容,**會直接對數組進行修改**。
array.splice(start)
array.splice(start, deleteCount)
array.splice(start, deleteCount, item1, item2, ...)
start : 如果超出了數組的長度,則從數組末尾開始添加內容;如果是負值,則表示從數組末位開始的第幾位(從1計數)。
deleteCount : 如果 deleteCount 是 0,則不移除元素,這種情況下,至少應添加一個新元素;如果 deleteCount 大於start 之後的元素的總數,則從 start 後面的元素都將被刪除(含第 start 位);如果deleteCount被省略,則其相當於(arr.length - start)。
item1, item2, ... :要添加進數組的元素
循環遍歷
Array.prototype.map(callback)
Array.prototype.forEach(callback)
Array.prototype.entries //返回一個新的Array Iterator對象,該對象包含數組中每個索引的鍵/值對。
Array.prototype.keys //返回一個新的Array疊代器,它包含數組中每個索引的鍵。
Array.prototype.values //返回一個新的 Array Iterator 對象,該對象包含數組每個索引的值。
這篇文章到這裡就結束了,我自己是一名前端六年老司機,這個星期給新手整理了一份前端學習資料,適合2017年學習,已經上傳到群文件里了593757064,歡迎初學和進階中的小夥伴。