前端面試總結--數據結構與算法一

數組

數組是比較簡單的內容,這裏介紹數組經常使用的操做。
數組的建立和初始化很是簡單,你能夠經過var arr = new Array()或者var arr = new Array('a','b','c')來建立一個數組。固然也能夠簡單的var arr = [];這也是最一般的用法。vue

添加和刪除元素

須要在數組末端追加元素,咱們能夠簡單的使用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);//用於克隆數組數組

數組經常使用方法

  1. concat--鏈接2各或者更多數組,並返回結構。函數

  2. every--對數組中的每一項運行給定函數,若是該函數對每一項都返回true,則返回true.code

  3. filter--對數組中的每一項運行給定函數,返回該函數會返回true的項組成的數組。對象

  4. forEach--對數組中的每一項運行給定函數。排序

  5. join--將全部的數組元素鏈接成一個字符串。索引

  6. indexOf--返回第一個與給定參數相等的數組元素的索引,沒有則返回-1ip

  7. lastIndexOf--返回在數組中搜索到的與給定參數相等的元素的索引裏最大的項。字符串

  8. map--對數組中的每一項運行給定函數,返回每次函數調用的結果組成的數組。get

  9. reverse--顛倒數組中元素的順序。

  10. slice--傳入索引值,將數組對應索引範圍內的元素做爲新數組返回。

  11. some--對數組中的每一項運行給定函數,若是任一項返回true,則返回true。

  12. sort--按照字母順序對數組排序,支持傳入指定排序方法的函數做爲參數。

  13. toString--將數組做爲字符串返回

  14. 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){
  console.log(x);
  return (x%2==0) ? true : false;
}
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)=>{return a-b});

對於自定義字符串的排序

var names = ['Ana', 'ana', 'john', 'John'];
names.sort(function(a,b){
    if(a.toLowerCase()<b.toLowerCase()){
        return -1;
    }
    if(a.toLowerCase()>b.toLowerCase()){
        return 1;
    }
    return 0;
}

參考書籍:Learning Javascript Data Structures and Algorithms

推薦一個找vue,angular組件的輪子工廠

相關文章
相關標籤/搜索