JavaScript Array常用方法

1.模擬數(shù)據(jù)結(jié)構(gòu)棧

pop()從數(shù)組尾部彈出一個元素并返回彈出的元素心例。尾部是指索引最大的元素累贤。數(shù)組的長度會減 1炭玫;
push(); //從數(shù)組的尾部壓入一個元素,并返回數(shù)組的新長度 ,數(shù)組長度+1
// 棧方法:可以對比彈夾
// 數(shù)組可以通過 push 和 pop 兩個方法形成棧數(shù)據(jù)結(jié)構(gòu)狭园。
var t = ['a', 'b', 'c', 'd', 'e', 'f'];
console.log(t.length)
console.log(t);
t.pop();
console.log(t);
// 從數(shù)組的末尾彈出一個元素缀蹄。并返回彈出的數(shù)組元素。數(shù)組的長度-1
t.pop();
console.log(t);
// 壓入一個元素排拷。
var r = t.push(3);
console.log(r);
console.log(t);
棧是一種數(shù)據(jù)結(jié)構(gòu)侧漓,特點(diǎn)就是 后入先出。

2.數(shù)組模擬隊列

shift();//從數(shù)組的頭部彈出一個元素监氢,并返回此元素
unshift()//從數(shù)組的頭部壓入一個元素火架,并返回 length
數(shù)組模擬隊列.png
用 push 和 shift 方法可以將數(shù)組模擬成隊列的數(shù)據(jù)結(jié)構(gòu)鉴象。
// 用數(shù)組模擬隊列數(shù)據(jù)結(jié)構(gòu)
var t = [];
// 往隊列里面放入 1, 2何鸡, 3 三個元素纺弊。
t.push(1);
t.push(2);
t.push(3);
console.log(t);
// 出隊一個元素。 1
console.log(t.shift());
console.log(t);
// 再出隊一個元素骡男。
console.log(t.shift()); //2
console.log(t);
// 隊列的特點(diǎn)就是先進(jìn)先出淆游。
棧和隊列的數(shù)據(jù)結(jié)構(gòu)總結(jié):
棧數(shù)據(jù)結(jié)構(gòu): 先進(jìn)后出。
隊列數(shù)據(jù)結(jié)構(gòu): 先進(jìn)先出隔盛。

3.排序方法

reverse();//對原數(shù)組進(jìn)行逆序
Reverse 方法可以對原數(shù)組的數(shù)據(jù)進(jìn)行逆序犹菱,原來的數(shù)組會收到影響。
var t = ["a", "b", "c", "d", "e"];
t.reverse();
console.log(t);
// ["e", "d", "c", "b", "a"]
sort()吮炕;//轉(zhuǎn)成字符串排序
sort 方法對原數(shù)組進(jìn)行排序腊脱,會對原數(shù)組有影響,默認(rèn)從升序(從小到大)進(jìn)行排序龙亲。
排序比較的算法是利用字符串比較的算法陕凹,如果是其他類型的元素,會先轉(zhuǎn)成字符串再進(jìn)行比較鳄炉。
// 對數(shù)組進(jìn)行排序
var t = ['c', 'b', 'd', 'e', 'a'];
console.log(t);
t.sort(); // 對數(shù)組中的元素進(jìn)行排序
console.log(t);
// => ["a", "b", "c", "d", "e"]
// 如果是數(shù)字進(jìn)行排序
var arr = [33, 10, 1, 22, 12, 222, 30];
console.log(arr);
// sort 方法是按照字符串進(jìn)行比較大小規(guī)則計算排序的杜耙。
// 如果數(shù)組中的元素不是字符串類型會轉(zhuǎn)成字符串后進(jìn)行比較。
arr.sort();
console.log(arr);
// => [1, 10, 12, 22, 222, 30, 33]

4. sort 排序高級應(yīng)用

函數(shù)可以作為參數(shù)傳遞給其他函數(shù)進(jìn)行使用拂盯。函數(shù)本身也是很一個對象佑女。這就是函數(shù)式編程的要訣。
數(shù)組的 sort 方法可以接收一個類型為函數(shù)的參數(shù)谈竿,此函數(shù)接收兩個參數(shù)团驱,要求返回值為:負(fù)數(shù), 0空凸,
正數(shù)店茶。如果返回負(fù)數(shù)代表第一個參數(shù)小于第二個參數(shù),0 為相等劫恒,正數(shù)則大于
[1, 3, 20, 11, 9].sort(function (a, b) {
    if( a > b) {
        return 1;
    } else if( a == b) {
        return 0;
    } else {
        return -1;
    }
});
// 此函數(shù)接收兩個參數(shù)贩幻,要求返回值為:負(fù)數(shù), 0两嘴, 正數(shù)丛楚。如果返回負(fù)數(shù)代表第一個參數(shù)小于第二個參
   數(shù),0 為相等憔辫,正數(shù)則大于
// 定義一個變量趣些,變量的類型的是 function
var compareFun = function (a, b) {
    return a - b; // a ==b, a-b =0 a<b, a-b =負(fù)數(shù)
};
var m = [ 3, 20, 10 , 9, 11, 12];
console.log(m);
// 默認(rèn)是轉(zhuǎn)成字符串后比較大小。
// m.sort();
// console.log(m);
// 利用函數(shù)式編程贰您,sort 方法可以接受一個比較大小的函數(shù)坏平,例如數(shù)值比較大小的方法進(jìn)行排序拢操。
// m.sort(compareFun);
// console.log(m);
// 進(jìn)一步優(yōu)化。由于匿名函數(shù)只用一次舶替,沒有必要創(chuàng)建一個變量令境。直接可以吧匿名函數(shù)的表達(dá)式傳遞到 
   sort 函數(shù)里去就行。
m.sort(function(a, b) {
    return a-b;
});
console.log(m);

5 數(shù)組的連接方法

concat()顾瞪;
連接原數(shù)組的元素和傳遞的參數(shù)形成一個新數(shù)組并返回舔庶,不影響原來的數(shù)組。
如果傳入的參數(shù)是數(shù)組陈醒,會把數(shù)組中的元素跟原數(shù)組的元素進(jìn)行合并成一新數(shù)組惕橙。
[1, 2,3].concat(9,1,4); // => [1, 2, 3, 9, 1, 4]
[1, 2,3].concat([9,true]); // => [1, 2, 3, 9, true]
[1, 2,3].concat([9,true, ['22',4, 9], 33])
//=> [1, 2, 3, 9, true, Array(3), 33]
var t = [1, 2, 3];
console.log(t);
// 調(diào)用數(shù)組的鏈接方法,不會影響原來的數(shù)字,函數(shù)會返回一個新的拼接的數(shù)組钉跷。
var newArr = t.concat('ss', true, 222);
console.log(t); // => [1, 2, 3]
console.log(newArr);
var newArr2 = t.concat(['laoma', 'beijing', 999]);
console.log(newArr2);
join();
可以把數(shù)組的元素(項)連接成字符串弥鹦,接收一個參數(shù)為連接符號,默認(rèn)是逗號,返回的結(jié)果為字符串。
[1, 2, 3].join(); //=> 1,2,3
[4,true, 3].join(“-”) ; // => 4-true-3
var t = [1, 2, 3];
// toString 方法會把數(shù)組轉(zhuǎn)成字符爷辙,重寫了原型的方法彬坏。
// 把數(shù)組中的元素都轉(zhuǎn)成字符串然后用逗號分隔不同的元素。
console.log(t.toString());
// join 方法也可以將數(shù)組轉(zhuǎn)成字符串犬钢,默認(rèn)跟 toString 一樣苍鲜。
console.log(t.join());
// join 發(fā)方法可以傳一個參數(shù)思灰,用來分隔數(shù)組中的元素
console.log(t.join('-'));
console.log(t.join('|'));

6.slice 方法

slice()玷犹;//復(fù)制數(shù)組的一部分
截取數(shù)組的一個片段或者子數(shù)組
接收 1 個到 2 個參數(shù)。參數(shù):截取數(shù)組起始索引和結(jié)束索引
如果只指定一個參數(shù)代表:從索引位置到數(shù)組結(jié)尾洒疚。
參數(shù)如果是負(fù)數(shù)代表從數(shù)組末尾計算索引位置歹颓。
此方法只能從數(shù)組前面往后面截取,如果第二個參數(shù)在第一個參數(shù)的前面則返回空數(shù)組[];
數(shù)組只能往后截取油湖,不能向前截取巍扛,如果向前截取返回[]
此方法對原數(shù)組沒有影響。
m = [1,2,3,4,5];
m.slice(2); //=>[3, 4, 5]
m.slice(-3); //=>[3, 4, 5]
m.slice(3, 4);//=> [4]
m.slice(-3, -1);//=>[3, 4]
var t = [0,1,2,3,4,5];
console.log( t );
// slice:復(fù)制數(shù)組的一部分乏德。
// 傳一個參數(shù)時候撤奸,是從參數(shù)的索引位置開始截取到數(shù)組的最后。
var a1 = t.slice(2); //從索引位置 2 開始截取到數(shù)組的最后喊括。
// a1= [2, 3, 4, 5]
console.log( a1 );
// 傳兩個參數(shù):從第一個參數(shù)作為索引位置開始胧瓜,到第二個參數(shù)作為索引前面的那個元素結(jié)束,截取數(shù)組
   切片郑什。對原數(shù)組沒有任何影響府喳。
var a2 = t.slice(2, 5); // a2=> [2,3,4]
console.log(a2);
console.log(t); // [0, 1, 2, 3, 4, 5] 對原數(shù)組沒有影響
// 如果傳遞 的是負(fù)數(shù),那么從數(shù)組結(jié)尾開始計算蘑拯。 但是不要用钝满。
// slice 方法只能往后截取兜粘,如果往前截取返回[];
var a3 = t.slice(-3, -1); // a3 => [3,4]
console.log(a3);

7.splice 方法

在原數(shù)組上進(jìn)行插入或者刪除數(shù)組元素,會影響原來數(shù)組弯蚜。
返回的結(jié)果是刪除的元素組成的數(shù)組孔轴。
參數(shù):可以接受 1 個參數(shù),2 個參數(shù)或者 2 個以上的參數(shù)熟吏。
第一個參數(shù)是刪除數(shù)據(jù)的索引位置
第二個參數(shù)是要刪除數(shù)組元素的個數(shù)
第三個參數(shù)開始是要插入到原數(shù)組中的元素距糖,插入的位置從第一個參數(shù)所在的索引開始。
//刪除數(shù)據(jù)
[1, 2, 3, 4, 5].splice(2);//=> [3, 4, 5] 原數(shù)組:[1,2]
[1, 2, 3, 4, 5].splice(3,2);// =>[4, 5] 原數(shù)組:[1,2,3]
[1, 2, 3, 4, 5].splice(-2); // =>[4, 5] 原數(shù)組:[1,2,3]
a = [1,2,3,4,5];
a.splice(3,2,33,'222',[99,98]);//=>[4,5]
//a=>[1, 2, 3, 33, "222", Array(2)]
//插入數(shù)據(jù):
a=[1,2,3]; a.splice(1,0,5,6);//=>[] a=[1,5,6,23]
//替換數(shù)據(jù):
a=[1,2,3];a.splice(1,1,4);//=>[2] a=[1,4,3]

8.數(shù)組繼承的方法

? toString()方法
? 它會將數(shù)組中的每個元素轉(zhuǎn)成字符串并用逗號連接起來牵寺。
? 類似join()方法的默認(rèn)情況悍引。
? [1, 3, 5].toString();//=> “1,3,5”
? toLocalString()方法
? valueOf()方法

9.數(shù)組案例

數(shù)組數(shù)據(jù):[90, 8, 34, 2, 39, 87, 22, 10]
1.將數(shù)組內(nèi)容進(jìn)行反序
2.求一個數(shù)據(jù)數(shù)組中的最小值及它的索引
3.求一個數(shù)組中的數(shù)據(jù)的平均值與和。
4.數(shù)組的數(shù)據(jù)進(jìn)行排序
5.給定一個數(shù)組帽氓,請去掉數(shù)組中的重復(fù)數(shù)據(jù)趣斤。
6.冒泡排序算法
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市黎休,隨后出現(xiàn)的幾起案子浓领,更是在濱河造成了極大的恐慌,老刑警劉巖势腮,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件联贩,死亡現(xiàn)場離奇詭異,居然都是意外死亡捎拯,警方通過查閱死者的電腦和手機(jī)泪幌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來署照,“玉大人祸泪,你說我怎么就攤上這事〗ㄜ剑” “怎么了没隘?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵瓷胧,是天一觀的道長攒岛。 經(jīng)常有香客問我掌敬,道長咱枉,這世上最難降的妖魔是什么那伐? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任灯萍,我火速辦了婚禮磁浇,結(jié)果婚禮上求冷,老公的妹妹穿的比我還像新娘钧大。我一直安慰自己翰撑,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著眶诈,像睡著了一般涨醋。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上逝撬,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天浴骂,我揣著相機(jī)與錄音,去河邊找鬼宪潮。 笑死溯警,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的狡相。 我是一名探鬼主播梯轻,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼尽棕!你這毒婦竟也來了喳挑?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤滔悉,失蹤者是張志新(化名)和其女友劉穎伊诵,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體回官,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡曹宴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了歉提。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片笛坦。...
    茶點(diǎn)故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖唯袄,靈堂內(nèi)的尸體忽然破棺而出弯屈,到底是詐尸還是另有隱情蜗帜,我是刑警寧澤恋拷,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站厅缺,受9級特大地震影響蔬顾,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜湘捎,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一诀豁、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧窥妇,春花似錦舷胜、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽翻伺。三九已至,卻和暖如春沮焕,著一層夾襖步出監(jiān)牢的瞬間吨岭,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工峦树, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留辣辫,地道東北人。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓魁巩,卻偏偏與公主長得像急灭,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子谷遂,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 創(chuàng)建數(shù)組 通過一個數(shù)字參數(shù)化戳,創(chuàng)建指定長度的數(shù)組 通過一個非數(shù)字參數(shù) 或 多個參數(shù)創(chuàng)建一個擁有元素的數(shù)組 通過直接量...
    歐陽小龍蝦閱讀 236評論 0 0
  • Array作為JavaScript中的高頻使用對象,擁有十分豐富的方法埋凯,能夠幫助我們快速處理常見問題点楼。 這一節(jié)中,...
    中年小鋼炮閱讀 214評論 0 3
  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,237評論 0 4
  • 第3章 基本概念 3.1 語法 3.2 關(guān)鍵字和保留字 3.3 變量 3.4 數(shù)據(jù)類型 5種簡單數(shù)據(jù)類型:Unde...
    RickCole閱讀 5,128評論 0 21
  • 以模擬公司為團(tuán)隊形式白对。每個團(tuán)隊選出自己的CEO掠廓、CFO、銷售總監(jiān)甩恼、網(wǎng)絡(luò)自媒體達(dá)人蟀瞧、創(chuàng)意總監(jiān)、宣傳總監(jiān)条摸。 CEO:首...
    趙揚(yáng)帆閱讀 467評論 0 0