成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

前端面試總結(jié)--數(shù)據(jù)結(jié)構(gòu)與算法一

Nosee / 2717人閱讀

摘要:對數(shù)組中的每一項(xiàng)運(yùn)行給定函數(shù)。將所有的數(shù)組元素連接成一個(gè)字符串。返回第一個(gè)與給定參數(shù)相等的數(shù)組元素的索引,沒有則返回返回在數(shù)組中搜索到的與給定參數(shù)相等的元素的索引里最大的項(xiàng)。

數(shù)組

數(shù)組是比較簡單的內(nèi)容,這里介紹數(shù)組常用的操作。
數(shù)組的創(chuàng)建和初始化非常簡單,你可以通過var arr = new Array()或者var arr = new Array("a","b","c")來創(chuàng)建一個(gè)數(shù)組。當(dāng)然也可以簡單的var arr = [];這也是最通常的用法。

添加和刪除元素

需要在數(shù)組末端追加元素,我們可以簡單的使用number[number.length] = 10;或者位面通常用到的number.push(10)。如果是在數(shù)組起始端添加元素,位面可以使用number.unshift(0).
相應(yīng)的在數(shù)組中刪除元素,我們可以用number.pop()(從末端刪除),或者number.shift()(從起始端刪除)。還有我們也可以通過設(shè)置數(shù)組的長度來刪除數(shù)組,比如var number = [1,2,3,4];number.length=3;來刪除最后一個(gè)元素。
這里還有一個(gè)很常用的方法來添加,刪除和修改元素,同時(shí)它也可以克隆數(shù)組。這個(gè)就是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);//用于克隆數(shù)組

數(shù)組常用方法

concat--連接2各或者更多數(shù)組,并返回結(jié)構(gòu)。

every--對數(shù)組中的每一項(xiàng)運(yùn)行給定函數(shù),如果該函數(shù)對每一項(xiàng)都返回true,則返回true.

filter--對數(shù)組中的每一項(xiàng)運(yùn)行給定函數(shù),返回該函數(shù)會返回true的項(xiàng)組成的數(shù)組。

forEach--對數(shù)組中的每一項(xiàng)運(yùn)行給定函數(shù)。

join--將所有的數(shù)組元素連接成一個(gè)字符串。

indexOf--返回第一個(gè)與給定參數(shù)相等的數(shù)組元素的索引,沒有則返回-1

lastIndexOf--返回在數(shù)組中搜索到的與給定參數(shù)相等的元素的索引里最大的項(xiàng)。

map--對數(shù)組中的每一項(xiàng)運(yùn)行給定函數(shù),返回每次函數(shù)調(diào)用的結(jié)果組成的數(shù)組。

reverse--顛倒數(shù)組中元素的順序。

slice--傳入索引值,將數(shù)組對應(yīng)索引范圍內(nèi)的元素作為新數(shù)組返回。

some--對數(shù)組中的每一項(xiàng)運(yùn)行給定函數(shù),如果任一項(xiàng)返回true,則返回true。

sort--按照字母順序?qū)?shù)組排序,支持傳入指定排序方法的函數(shù)作為參數(shù)。

toString--將數(shù)組作為字符串返回

valueOf--將數(shù)組作為字符串返回

數(shù)組合并

可以通過concat方法來合并多個(gè)數(shù)組。concat方法可以向一個(gè)數(shù)組傳遞數(shù)組,對象或者元素。數(shù)組會按照該方法傳入的順序連接指定數(shù)組。

var zero = 0;
var positive = [1,2,3];
var negative = [-3,-2,-1];
var numbers = negative.concat(zero,positive);
迭代器函數(shù)

前面介紹了很多用于迭代數(shù)組的函數(shù)。下面來舉一個(gè)例子,有一個(gè)數(shù)組,它是從1到10.找出數(shù)組中的偶數(shù)。

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.它會迭代數(shù)組中的每一個(gè)元素,直到返回false。

numbers.every(isEven);  

這樣數(shù)組numbers的第一個(gè)元素是1,它不是偶然,函數(shù)返回false。every執(zhí)行結(jié)束了。
然后在看some.它與every類似,只是它運(yùn)行到true之后停止執(zhí)行。這樣當(dāng)執(zhí)行到2的時(shí)候,函數(shù)返回true便停止了。

numbers.some(isEven);

再看map函數(shù),它會返回每個(gè)元素處理后的結(jié)果。

var result = numbers.map(isEven);

結(jié)果是[false,true,false,true,false,true,false,true,false,true].
還有一個(gè)filter方法,它返回的新數(shù)組由使函數(shù)返回true的元素組成:

var eventNumbers = numbers.filter(isEven); 

這樣evenNumbers數(shù)組中的元素都是偶數(shù)[2,4,6,8,10].
最后再看一下reduce方法。它接受一個(gè)函數(shù)作為參數(shù),這個(gè)函數(shù)后4個(gè)參數(shù):previousValue,currentValue,index,array.這個(gè)函數(shù)會返回一個(gè)將被疊加到累加器的值,reduce方法停止執(zhí)行后會返回這個(gè)累加值。如果是對一個(gè)數(shù)組中的所有元素求和,這個(gè)方法很有用。

搜索和排序

對于排序我們可以使用sort方法,默認(rèn)的sort方法會對數(shù)字按大小排序,對字符串按字母表排序,比如

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;
    }
    return 0;
}

參考書籍:Learning Javascript Data Structures and Algorithms

推薦一個(gè)找vue,angular組件的輪子工廠

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/88392.html

相關(guān)文章

  • 前端面試總結(jié)--數(shù)據(jù)結(jié)構(gòu)算法

    摘要:鏈表前端的面試中,鏈表還是經(jīng)常會被問到。這種數(shù)據(jù)結(jié)構(gòu)非常方便,提供了便利店語法來訪問它的元素。參考書籍推薦一個(gè)找組件的輪子工廠前端面試總結(jié)數(shù)據(jù)結(jié)構(gòu)與算法一前端面試總結(jié)數(shù)據(jù)結(jié)構(gòu)與算法二前端面試總結(jié)數(shù)據(jù)結(jié)構(gòu)與算法三 鏈表 前端的面試中,鏈表還是經(jīng)常會被問到。所以熟悉鏈表的結(jié)果以及鏈表操作的方法還是很重要的。說道存儲多個(gè)元素,數(shù)組可能是最常用的數(shù)據(jù)結(jié)構(gòu)。這種數(shù)據(jù)結(jié)構(gòu)非常方便,提供了便利店[]...

    superPershing 評論0 收藏0
  • 前端面試總結(jié)--數(shù)據(jù)結(jié)構(gòu)算法

    摘要:結(jié)構(gòu)的實(shí)例的方法,用于對每個(gè)成員執(zhí)行某種操作,沒有返回值。參考和數(shù)據(jù)結(jié)構(gòu)推薦一個(gè)找組件的輪子工廠前端面試總結(jié)數(shù)據(jù)結(jié)構(gòu)與算法一前端面試總結(jié)數(shù)據(jù)結(jié)構(gòu)與算法二前端面試總結(jié)數(shù)據(jù)結(jié)構(gòu)與算法三前端面試總結(jié)數(shù)據(jù)結(jié)構(gòu)與算法四 集合 集合是由一組無序且唯一的項(xiàng)組成。這個(gè)數(shù)據(jù)結(jié)構(gòu)使用了與有限集合相同的數(shù)學(xué)概念。 創(chuàng)建一個(gè)集合 function Set(){ var items = {}; } ...

    xuexiangjys 評論0 收藏0
  • 前端排序算法總結(jié);前端面試題2.0;JavaScript異步編程

    摘要:與異步編程按照維基百科上的解釋獨(dú)立于主控制流之外發(fā)生的事件就叫做異步。因?yàn)榈拇嬖?,至少在被?biāo)準(zhǔn)化的那一刻起,就支持異步編程了。然而異步編程真正發(fā)展壯大,的流行功不可沒。在握手過程中,端點(diǎn)交換認(rèn)證和密鑰以建立或恢復(fù)安全會話。 1、前端 排序算法總結(jié) 排序算法可能是你學(xué)編程第一個(gè)學(xué)習(xí)的算法,還記得冒泡嗎? 當(dāng)然,排序和查找兩類算法是面試的熱門選項(xiàng)。如果你是一個(gè)會寫快排的程序猿,面試官在比較...

    aaron 評論0 收藏0
  • 前端排序算法總結(jié);前端面試題2.0;JavaScript異步編程

    摘要:與異步編程按照維基百科上的解釋獨(dú)立于主控制流之外發(fā)生的事件就叫做異步。因?yàn)榈拇嬖冢辽僭诒粯?biāo)準(zhǔn)化的那一刻起,就支持異步編程了。然而異步編程真正發(fā)展壯大,的流行功不可沒。在握手過程中,端點(diǎn)交換認(rèn)證和密鑰以建立或恢復(fù)安全會話。 1、前端 排序算法總結(jié) 排序算法可能是你學(xué)編程第一個(gè)學(xué)習(xí)的算法,還記得冒泡嗎? 當(dāng)然,排序和查找兩類算法是面試的熱門選項(xiàng)。如果你是一個(gè)會寫快排的程序猿,面試官在比較...

    ARGUS 評論0 收藏0
  • 前端排序算法總結(jié);前端面試題2.0;JavaScript異步編程

    摘要:與異步編程按照維基百科上的解釋獨(dú)立于主控制流之外發(fā)生的事件就叫做異步。因?yàn)榈拇嬖?,至少在被?biāo)準(zhǔn)化的那一刻起,就支持異步編程了。然而異步編程真正發(fā)展壯大,的流行功不可沒。在握手過程中,端點(diǎn)交換認(rèn)證和密鑰以建立或恢復(fù)安全會話。 1、前端 排序算法總結(jié) 排序算法可能是你學(xué)編程第一個(gè)學(xué)習(xí)的算法,還記得冒泡嗎? 當(dāng)然,排序和查找兩類算法是面試的熱門選項(xiàng)。如果你是一個(gè)會寫快排的程序猿,面試官在比較...

    April 評論0 收藏0
  • Deep in JS - 收藏集 - 掘金

    摘要:今天同學(xué)去面試,做了兩道面試題全部做錯(cuò)了,發(fā)過來給道典型的面試題前端掘金在界中,開發(fā)人員的需求量一直居高不下。 排序算法 -- JavaScript 標(biāo)準(zhǔn)參考教程(alpha) - 前端 - 掘金來自《JavaScript 標(biāo)準(zhǔn)參考教程(alpha)》,by 阮一峰 目錄 冒泡排序 簡介 算法實(shí)現(xiàn) 選擇排序 簡介 算法實(shí)現(xiàn) ... 圖例詳解那道 setTimeout 與循環(huán)閉包的經(jīng)典面...

    enali 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<