前端面試總結 資料結構與演算法一

2021-09-16 12:38:16 字數 2792 閱讀 8246

陣列是比較簡單的內容,這裡介紹陣列常用的操作。

陣列的建立和初始化非常簡單,你可以通過var arr = new array()或者var arr = new array('a','b','c')來建立乙個陣列。當然也可以簡單的var arr = ;這也是最通常的用法。

需要在陣列末端追加元素,我們可以簡單的使用number[number.length] = 10;或者位面通常用到的number.push(10)。如果是在陣列起始端新增元素,位面可以使用number.unshift(0).

相應的在陣列中刪除元素,我們可以用number.pop()(從末端刪除),或者number.shift()(從起始端刪除)。還有我們也可以通過設定陣列的長度來刪除陣列,比如var number = [1,2,3,4];number.length=3;來刪除最後乙個元素。

這裡還有乙個很常用的方法來新增,刪除和修改元素,同時它也可以轉殖陣列。這個就是splice.

var number = [1,2,3];

number.splice(1,1,4);//修改index為1的之後1位元素為4

number.splice(1,1,4);//將4新增到index為1的元素後面

number.splice(1,1);//刪除index為1後1位的元素

var clone = number.splice(0);//用於轉殖陣列

concat--連線2各或者更多陣列,並返回結構。

every--對陣列中的每一項執行給定函式,如果該函式對每一項都返回true,則返回true.

filter--對陣列中的每一項執行給定函式,返回該函式會返回true的項組成的陣列。

foreach--對陣列中的每一項執行給定函式。

join--將所有的陣列元素連線成乙個字串。

indexof--返回第乙個與給定引數相等的陣列元素的索引,沒有則返回-1

lastindexof--返回在陣列中搜尋到的與給定引數相等的元素的索引裡最大的項。

map--對陣列中的每一項執行給定函式,返回每次函式呼叫的結果組成的陣列。

reverse--顛倒陣列中元素的順序。

slice--傳入索引值,將陣列對應索引範圍內的元素作為新陣列返回。

some--對陣列中的每一項執行給定函式,如果任一項返回true,則返回true。

sort--按照字母順序對陣列排序,支援傳入指定排序方法的函式作為引數。

tostring--將陣列作為字串返回

valueof--將陣列作為字串返回

可以通過concat方法來合併多個陣列。concat方法可以向乙個陣列傳遞陣列,物件或者元素。陣列會按照該方法傳入的順序連線指定陣列。

var zero = 0;

var positive = [1,2,3];

var negative = [-3,-2,-1];

var numbers = negative.concat(zero,positive);

前面介紹了很多用於迭代陣列的函式。下面來舉乙個例子,有乙個陣列,它是從1到10.找出陣列中的偶數。

var iseven = function(x)

var numbers = [1,2,3,4,5,6,7,8,9,10];

首先我們嘗試用every.它會迭代陣列中的每乙個元素,直到返回false。

numbers.every(iseven);
這樣陣列numbers的第乙個元素是1,它不是偶然,函式返回false。every執行結束了。

然後在看some.它與every類似,只是它執行到true之後停止執行。這樣當執行到2的時候,函式返回true便停止了。

numbers.some(iseven);
再看map函式,它會返回每個元素處理後的結果。

var result = numbers.map(iseven);
結果是[false,true,false,true,false,true,false,true,false,true].

還有乙個filter方法,它返回的新陣列由使函式返回true的元素組成:

var eventnumbers = numbers.filter(iseven);
這樣evennumbers陣列中的元素都是偶數[2,4,6,8,10].

最後再看一下reduce方法。它接受乙個函式作為引數,這個函式後4個引數:previousvalue,currentvalue,index,array.這個函式會返回乙個將被疊加到累加器的值,reduce方法停止執行後會返回這個累加值。如果是對乙個陣列中的所有元素求和,這個方法很有用。

對於排序我們可以使用sort方法,預設的sort方法會對數字按大小排序,對字串按字母表排序,比如

numbers.sort()
或者可以自定義排序方法

numbers.sort((a,b)=>);
對於自定義字串的排序

var names = ['ana', 'ana', 'john', 'john'];

names.sort(function(a,b)

return 0;

}

推薦乙個找vue,angular元件的輪子工廠

前端面試總結 資料結構與演算法二

棧是一種遵從後進先出 lifo 原則的有序集合。新新增的或者待刪除的元素都儲存在棧的末尾。稱作棧頂,另一端就叫棧底。在棧裡,新元素都靠近棧頂,舊元素都接近棧底。function stack 接下來,是棧的方法 push element 新增新元素到棧頂。pop 移除棧頂的元素,同時返回被移除的元素。...

前端面試總結 資料結構與演算法四

前端的面試中,鍊錶還是經常會被問到。所以熟悉鍊錶的結果以及鍊錶操作的方法還是很重要的。說道儲存多個元素,陣列可能是最常用的資料結構。這種資料結構非常方便,提供了便利店語法來訪問它的元素。但是陣列的缺點就是對元素進行插入或者刪除操作的成本很高,需要移動元素。鍊錶儲存有序的元素集合,但不同於陣列,鍊錶中...

前端面試 資料結構

資料結構面試考點 棧是一種遵從後進先出 lifo,後進先出 原則的有序集合。新新增的或者待刪除的元素都儲存在棧的末尾。稱作棧頂,另一端就叫棧底。在棧裡,新元素都靠近棧頂,舊元素都接近棧底。棧的建立 function stack 接下來,是棧的方法 push element 新增新元素到棧頂。pop ...