數(shù)組(array)方法

改變原數(shù)組方法:

1蛋勺、push():尾部添加,返回值是改變后的數(shù)組長度鸠删;
var arr = [1, 2];
arr.push(3) ;// 3
arr; //  [1, 2, 3]
arr.push('b','c'); //5
arr; //[1, 2, 3, "b", "c"]
arr.push([10,20]); //6
arr; //[1, 2, 3, "b", "c", [10,20]]
2抱完、pop()尾部刪除,返回值是刪除的元素冶共;
var arr =[1, 2, 3, "b", "c", [10,20]];
arr.pop(); //[10, 20]
arr;  // [1, 2, 3, "b", "c"]
3乾蛤、unshift()頭部添加每界,返回值是改變后的數(shù)組長度捅僵;
var arr = [1, 2];
arr.unshift(3,4 );  //4
arr;  // [3, 4, 1, 2]
4.shift()頭部刪除,返回值是刪除的元素眨层;
var arr = ['a', 'b', 1, 2];
arr.shift(); //'a'
arr;  //['b', 1, 2]
5庙楚、sort()數(shù)組排序犹芹;

1.默認(rèn)是將所有元素轉(zhuǎn)換成字符串样悟,再按字符串Unicode碼點(diǎn)排序。返回值是新的數(shù)組归榕。

var arr = [1, 2, 12, 'a', 'b', 'ab', 'A', 'B']
arr.sort();  //[1, 12, 2, "A", "B", "a", "ab", "b"] 注意:12排在了2的前面

2.果元素都是數(shù)字叁征,要按從小到大排序纳账,可以傳入一個(gè)回調(diào)函數(shù)作為參數(shù)。

var arr = [1, 2, 12, 100]

arr.sort(function(a,b){
    return a-b;
});
// [1, 2, 12, 100]
6捺疼、reverse()顛倒數(shù)組中元素的位置疏虫;
var arr = [1, 2, 12, 'a', 'b', 'ab', 'A', 'B'];
arr.reverse();
//["B", "A", "ab", "b", "a", 12, 2, 1]
7、array.splice()截取或者添加啤呼;返回值是截取的元素

array.splice(index,howmany,item1,.....,itemX)
參數(shù):
index:必需傳卧秘。整數(shù),規(guī)定添加/刪除項(xiàng)目的位置官扣,使用負(fù)數(shù)可從數(shù)組結(jié)尾處規(guī)定位置翅敌。
howmany :必需傳。要?jiǎng)h除的項(xiàng)目數(shù)量惕蹄。如果設(shè)置為 0蚯涮,則不會刪除項(xiàng)目。
item1, ..., itemX:可選卖陵。向數(shù)組添加的新項(xiàng)目遭顶。

1.只刪除,不添加「洗伲可以傳入2個(gè)參數(shù):

var arr = ['Alibaba', 'Tencent', 'Baidu', 'XiaoMi', '360'];

// 從索引2開始刪除3個(gè)元素
arr.splice(2, 3); // 返回刪除的元素 ['Baidu', 'XiaoMi', '360']
arr; // ['Alibaba', 'Tencent']

2.只添加,不刪除液肌。第2個(gè)參數(shù)設(shè)為0,即不刪除元素鸥滨。

arr.splice(2, 0, 'Toutiao', 'Meituan', 'Didi'); // 返回[],因?yàn)闆]有刪除任何元素
arr; //["Alibaba", "Tencent", "Toutiao", "Meituan", "Didi"]

3.先刪除若干元素嗦哆,然后在刪除的位置上在添加若干個(gè)元素谤祖。

var  arr =["Alibaba", "Tencent", "Toutiao", "Meituan", "Didi"]
arr.splice(2,2,'Apple','Google');  //["Toutiao", "Meituan"]
arr; //["Alibaba", "Tencent", "Apple", "Google", "Didi"]

不改變原數(shù)組的方法

1、ndexOf() 和lastIndexOf()

1.indexof() : 返回元素在數(shù)組的第一次出現(xiàn)的索引老速,從0開始粥喜。若數(shù)組不存在該元素,則返回-1橘券。

var arr = [1, 2, 2];
arr.indexOf(1); //0
arr.indexOf(10); //-1

2.lastIndexOf(): 返回元素在數(shù)組最后一次出現(xiàn)的索引额湘,如果沒有出現(xiàn)則返回-1.

var arr = [1, 2, 2];
arr.lastIndexOf(2); //2
arr.lastIndexOf(10); //-1
2、slice()截取數(shù)組的一部分旁舰,返回一個(gè)新的數(shù)組锋华,與字符串的substring()方法一樣

1.slice(start)一個(gè)參數(shù),索引從start開始截取

var arr = [1, 2, 2, 5, 6];
arr.slice(2) // [2, 5, 6]

2.slice(start,end)兩個(gè)參數(shù)箭窜,索引從start開始到索引end結(jié)束毯焕。通常,接受2個(gè)參數(shù)作為一個(gè)左閉右開區(qū)間磺樱,即包括開始索引位置的元素纳猫,但不包括結(jié)束索引位置的元素。

var arr = [1, 2, 2, 5, 6];
arr.slice(1,3) // [2, 2]

3.slice()沒有參數(shù)竹捉,則是復(fù)制整個(gè)數(shù)組芜辕。

var arr = [1, 2, 2, 5, 6];
arr.slice();
3、concat():合并數(shù)組块差。返回一個(gè)新的數(shù)組

1.方法的參數(shù)可以有多個(gè)侵续,也可以任意類型,數(shù)值憾儒、字符串询兴、布爾值、數(shù)組起趾、對象 都可以诗舰,參數(shù)會被添加到新的數(shù)組中。

var arr1 =  [1, 2, 3,4,5,6];
var arr2 = ['a','b','c'];
var arr3 = arr1.concat(arr2);
arr3;   //[1, 2, 3, 4, 5, 6, "a", "b", "c"]

2.注意训裆,如果參數(shù)是數(shù)組, 會被拉平一次眶根,即數(shù)組會被拆開來,加入到新的數(shù)組中边琉。

var arr1 = [1, 2, 3];
var arr2 = arr1.concat(66,'abc',true,[10,20],[30,[31,32]],{x:100});
arr2;  //[1, 2, 3, 66, "abc", true, 10, 20, 30, [31,32], {x:100}]
4属百、join()將數(shù)組轉(zhuǎn)換為字符串

它會把當(dāng)前Array的每個(gè)元素都用指定的字符串連接起來,然后返回連接后的字符串变姨。
1.參數(shù)是用來指定連接的字符串族扰。

var arr = [1, 2, 3];
arr.join('*')   //"1*2*3"

2.如果沒有指定參數(shù),默認(rèn)是用 "," 連接。

  var arr = [1, 2, 3];
arr.join()   //"1,2,3"
5渔呵、toString(): 返回?cái)?shù)組的字符串形式
var arr = [1, 2, 3];
arr.toString() // "1,2,3"
6怒竿、map()數(shù)組中的元素為原始數(shù)組元素調(diào)用函數(shù)處理后的值。
map() 方法按照原始數(shù)組元素順序依次處理元素扩氢。

注意: map() 不會對空數(shù)組進(jìn)行檢測耕驰。
注意: map() 不會改變原始數(shù)組。

1.對數(shù)組的所有成員依次調(diào)用一個(gè)函數(shù)录豺,返回值是一個(gè)新數(shù)組朦肘。

arr.map(function(elem, index, arr) {
    return elem * index;
}); 
//[0, 2, 6]

2.map方法接受一個(gè)函數(shù)作為參數(shù),該函數(shù)調(diào)用時(shí),map方法會將其傳入3個(gè)參數(shù)双饥,分別是當(dāng)前成員媒抠、當(dāng)前位置和數(shù)組本身(后2個(gè)參數(shù)可選)。

arr.map(function(elem, index, arr) {
    return elem * index;
}); 
//[0, 2, 6]

3.map方法還可以接受第2個(gè)參數(shù)兢哭,表示回調(diào)函數(shù)執(zhí)行時(shí)this所指向的對象领舰。

7夫嗓、forEach():

與map方法很相似迟螺,也是遍歷數(shù)組的所有成員,執(zhí)行某種操作舍咖。注意:forEach方法一般沒有返回值

var arr = [1, 2, 3];
function log(element, index, array) {
    console.log('[' + index + '] = ' + element);
}
arr.forEach(log);
// [0] = 1
// [1] = 2
// [2] = 3
8矩父、filter(): 刪選
var arr = [1, 2, 3, 4, 5];
arr.filter(function (elem, index, arr) {
  return index % 2 === 1;
});
//[2, 4]
9、some()和every()方法都是JS中數(shù)組的迭代方法排霉。ES5里的迭代函數(shù)

接受一個(gè)函數(shù)作為參數(shù)窍株,所有數(shù)組成員依次執(zhí)行該函數(shù),返回一個(gè)布爾值攻柠。該函數(shù)接受三個(gè)參數(shù)球订,依次是當(dāng)前位置的成員、當(dāng)前位置的序號和整個(gè)數(shù)組瑰钮。
1.some方法是只要有一個(gè)數(shù)組成員的返回值是true冒滩,則整個(gè)some方法的返回值就是true,否則false浪谴。

var arr = [1, 2, 3, 4];
arr.some(function (elem, index, arr) {
  return elem >= 3;
});
// true

2.every方法則是所有數(shù)組成員的返回值都是true开睡,才返回true,否則false苟耻。

var arr = [1, 2, 3, 4];
arr.every(function (elem, index, arr) {
  return elem >= 3;
});
// false

注意篇恒,對于空數(shù)組,some方法返回false凶杖,every方法返回true

總結(jié):ES5提供的迭代函數(shù):

forEach(): 對數(shù)組中的每一項(xiàng)運(yùn)行給定函數(shù),無返回值
every(): 對數(shù)組中的每一項(xiàng)運(yùn)行給定函數(shù),如果該函數(shù)每一項(xiàng)都返回true,則返回true
some(): 對數(shù)組中的每一項(xiàng)運(yùn)行給定函數(shù),如果該函數(shù)任意一項(xiàng)返回true,則返回true
map(): 對數(shù)組中的每一項(xiàng)運(yùn)行給定函數(shù),返回每次函數(shù)調(diào)用的結(jié)果組成的數(shù)組
filter(): 對數(shù)組中的每一項(xiàng)運(yùn)行給定函數(shù),該函數(shù)會返回true的項(xiàng)組成的數(shù)組

10胁艰、reduce()和reduceRight():依次處理數(shù)組的每個(gè)成員,最終累計(jì)為一個(gè)值。

1.reduce是從左到右處理(從第一個(gè)成員到最后一個(gè)成員)

arr = [1, 2, 3]
arr.reduce(function(x, y){
  console.log(x, y)
  return x + y;
});
// 1 2
// 3 3
// 6

2.reduceRight則是從右到左處理(從最后一個(gè)成員到第一個(gè)成員)

rr.reduceRight(function(x, y){
  console.log(x, y)
  return x + y;
});
// 3 2
// 5 1
// 6
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末腾么,一起剝皮案震驚了整個(gè)濱河市醋虏,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌哮翘,老刑警劉巖颈嚼,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異饭寺,居然都是意外死亡阻课,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進(jìn)店門艰匙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來限煞,“玉大人,你說我怎么就攤上這事员凝∈鹱ぃ” “怎么了?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵健霹,是天一觀的道長旺上。 經(jīng)常有香客問我,道長糖埋,這世上最難降的妖魔是什么宣吱? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮瞳别,結(jié)果婚禮上征候,老公的妹妹穿的比我還像新娘。我一直安慰自己祟敛,他們只是感情好疤坝,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著馆铁,像睡著了一般跑揉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上叼架,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天畔裕,我揣著相機(jī)與錄音,去河邊找鬼乖订。 笑死扮饶,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的乍构。 我是一名探鬼主播甜无,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼扛点,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了岂丘?” 一聲冷哼從身側(cè)響起陵究,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎奥帘,沒想到半個(gè)月后铜邮,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡寨蹋,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年松蒜,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片已旧。...
    茶點(diǎn)故事閱讀 40,117評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡秸苗,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出运褪,到底是詐尸還是另有隱情惊楼,我是刑警寧澤,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布秸讹,位于F島的核電站檀咙,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏嗦枢。R本人自食惡果不足惜攀芯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望文虏。 院中可真熱鬧,春花似錦殖演、人聲如沸氧秘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽丸相。三九已至,卻和暖如春彼棍,著一層夾襖步出監(jiān)牢的瞬間灭忠,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工座硕, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留弛作,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓华匾,卻偏偏與公主長得像映琳,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,060評論 2 355

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