前端入門(mén)系列(三):javascript數(shù)組方法

ECMAScript3定義的數(shù)組方法

  • 轉(zhuǎn)換:join()
  • 排序: reverse()、sort()
  • 連接:concat()
  • 裁剪: slice()
  • 插入、刪除:splice()、push()、pop()、unshift()、shift()
  • 對(duì)象方法:toString()、toLocaleString()

join()

將數(shù)組中所有元素轉(zhuǎn)化為字符串并連接在一起,返回最后生成的字符串??梢灾付ㄒ粋€(gè)可選的字符串在生成的字符串中來(lái)分隔數(shù)組中的各個(gè)元素。如果不指定分隔符,默認(rèn)使用逗號(hào)。

reverse()

將數(shù)組中的元素順序顛倒,返回逆序的數(shù)組。它不通過(guò)創(chuàng)建新的數(shù)組重新排列,而是在原先的數(shù)組中排列它們。

sort()

將數(shù)組中的元素排序并返回排序后的數(shù)組。當(dāng)不帶參數(shù)調(diào)用sort()時(shí),數(shù)組元素以字母表順序排序。
如果包含undefined的元素,它們會(huì)被排到數(shù)組的尾部。
如果要按照其他方式排序,必須給sort()方法傳遞一個(gè)比較函數(shù),該函數(shù)的返回值決定了該函數(shù)所傳入?yún)?shù)a,b在排序好的數(shù)組中的先后順序。假設(shè)第一個(gè)參數(shù)在前,則應(yīng)該返回一個(gè)小于0的數(shù);相反,則返回一個(gè)大于0的數(shù)。

//按數(shù)值升序
a.sort(function(a,b){
    return a-b;
})
//按數(shù)組降序
a.sort(function(a,b){
    return b-a;
})
//隨機(jī)排序
a.sort(function(){
    return 0.5-Math.random();
})

concat()

Array.concat()方法創(chuàng)建并返回一個(gè)新的數(shù)組,元素包括調(diào)用concat()的原始數(shù)組的元素和concat()的每個(gè)參數(shù)。如果這些參數(shù)中的任何一個(gè)自身是數(shù)組,則連接的是數(shù)組的元素;但是,concat
()不會(huì)扁平化數(shù)組的數(shù)組,可以理解為只能解剖一層。

var a=[1,2,3];
a.concat(4,5);            //返回[1,2,3,4,5]
a.concat([4,5]);          //返回[1,2,3,4,5]
a.concat([4,5],[6,7])     //返回[1,2,3,4,5,6,7]
a.concat(4,[5,[6,7]])     //返回[1,2,3,4,5,[6,7]]

由于返回的是新數(shù)組,該方法可用于實(shí)現(xiàn)數(shù)組復(fù)制

var b=a.concat();
console.log(b)            //返回[1,2,3]             

slice()

Array.slice()方法創(chuàng)建并返回指定數(shù)組的子數(shù)組。
slice(start,end) 參數(shù)start為必須,end為可選,分別指定截取的數(shù)組的起、止位置;如果出現(xiàn)負(fù)數(shù),它表示相對(duì)于數(shù)組最后一個(gè)元素的位置。
slice(start) 截取start開(kāi)始到數(shù)組結(jié)束的所有元素
slice(start,end) 截取[start,end)閉開(kāi)區(qū)間的數(shù)組元素

var a=[1,2,3,4,5];       
a.slice(0,3);        //返回[1,2,3]
a.slice(3);          //返回[4,5]
a.slice(1,-1);       //返回[2,3,4]
a.slice(-3,-2);      //返回[3]

slice()方法可用于實(shí)現(xiàn)數(shù)組復(fù)制

a.slice(0);          //返回[1,2,3,4,5]

splice()

Array.splice()是數(shù)組中插入或刪除元素的通用方法。不同于concat()和slice(),splice()會(huì)修改調(diào)用的數(shù)組
splice(index,howmany,item1,item2...)
第一個(gè)參數(shù)指定了插入或刪除的起始位置
第二個(gè)參數(shù)指定了應(yīng)該從數(shù)組中刪除的元素的個(gè)數(shù),如果省略,從起始點(diǎn)開(kāi)始到數(shù)組結(jié)尾的所有元素都將被刪除
返回值:splice()返回一個(gè)由刪除元素組成的數(shù)組,或者沒(méi)有刪除元素,就返回空數(shù)組。
刪除:

var a=[1,2,3,4,5];
a.splice(3);           //返回[4,5],a是[1,2,3]
a.splice(1,2);         //返回[2,3],a是[1]

插入:注意區(qū)別于concat(),splice()會(huì)插入數(shù)組本身而非數(shù)組的元素

var a=[1,2,3,4,5];
a.splice(2,0,'a','b')  //返回[],a是[1,2,'a','b',3,4,5]
a.splice(2,2,[1,2],3)  //返回[3,4],a是[1,2,[1,2],3,4,5]

push()、pop()、unshift()、shift()

數(shù)組的尾部插入元素、刪除元素:
push()、pop()
數(shù)組的頭部插入元素、刪除元素:
unshift()、shift()
這些方法都可以被splice()替代;

toString()和toLocaleString()

toString()方法將數(shù)組的每個(gè)元素轉(zhuǎn)化為字符串,返回用逗號(hào)分隔的字符串列表。注意,輸出不包括方括號(hào)或其他任何形式包裹數(shù)組數(shù)值的分隔符。

[1,2,3].toString();       //返回'1,2,3'
["a","b","c"].toString(); //返回'a,b,c'
[1,[2,'c']].toString();   //返回'1,2,c'

這里與不使用任何參數(shù)調(diào)用join()方法返回的字符串是一樣的。

toLocaleString()是數(shù)組對(duì)象的本地字符串表示,返回結(jié)果隨機(jī)器不同而不同,最好不要在腳本中用來(lái)基本運(yùn)算。

ECMAScript5中的數(shù)組方法

ECMAScript5中數(shù)組方法概述:
大多數(shù)方法第一個(gè)參數(shù)接收一個(gè)函數(shù)并且對(duì)數(shù)組中的每個(gè)元素調(diào)用一次該函數(shù)。對(duì)不存在的元素不調(diào)用該函數(shù)。
大多數(shù)情況下,調(diào)用提供的函數(shù)使用三個(gè)參數(shù):數(shù)組元素、元素的索引和數(shù)組本身,通常只需要使用第一個(gè)參數(shù),忽略后面兩個(gè)參數(shù)。
大多數(shù)ECMASscript數(shù)組方法第一個(gè)參數(shù)是一個(gè)函數(shù),第二個(gè)參數(shù)可選。如果有第二個(gè)參數(shù),則調(diào)用的函數(shù)被看成第二個(gè)參數(shù)的方法,即第二個(gè)參數(shù)可以在調(diào)用函數(shù)時(shí)將作為它的this關(guān)鍵字的值來(lái)使用,起到修改指針的作用。

forEach()

array1.forEach(callbackfn[, thisArg])

參數(shù) 定義
array1 必需。 一個(gè)數(shù)組對(duì)象。
callbackfn 必需。 一個(gè)接受最多三個(gè)參數(shù)的函數(shù)。 對(duì)于數(shù)組中的每個(gè)元素,forEach 都會(huì)調(diào)用 callbackfn 函數(shù)一次。
thisArg可選 可在 callbackfn 函數(shù)中為其引用 this 關(guān)鍵字的對(duì)象。 如果省略 thisArg,則 undefined 將用作 this 值。

如果 callbackfn 參數(shù)不是函數(shù)對(duì)象,則將引發(fā) TypeError 異常。

對(duì)于數(shù)組中的每個(gè)元素,forEach 方法都會(huì)調(diào)用 callbackfn 函數(shù)一次(采用升序索引順序)。 不為數(shù)組中缺少的元素調(diào)用該回調(diào)函數(shù)。

除了數(shù)組對(duì)象之外,forEach 方法可由具有 length 屬性且具有已按數(shù)字編制索引的屬性名的任何對(duì)象使用。

map()

map()方法將調(diào)用數(shù)組的每個(gè)元素傳遞給指定的函數(shù),并返回一個(gè)數(shù)組,它包含該函數(shù)的返回值。
map()方法返回的是新數(shù)組,它不修改調(diào)用的數(shù)組;如果是稀疏數(shù)組,返回的也是相同方式的稀疏數(shù)組。它具有相同的長(zhǎng)度,相同的缺失元素。

a=[1,2,3];
b=a.map(function(x){
    return x*x;          //b是[1,4,9]    
})

filter()

filter()方法創(chuàng)建并返回調(diào)用數(shù)組的一個(gè)子集。傳遞的函數(shù)用來(lái)進(jìn)行邏輯判定的,該函數(shù)返回true或false。
返回true的元素將被添加成為這個(gè)子集的成員。

a=[1,2,3,4,5];
b=a.filter(function(x){
    return x>3
})                 //b是[4,5]
c=a.filter(function(x,i){
    return i%2==0;
})                 //c是[1,3,5]

every()和some()方法

所有:every()每個(gè)數(shù)組元素回調(diào)函數(shù)都返回true的時(shí)候才會(huì)返回true,當(dāng)遇到false的時(shí)候終止執(zhí)行,返回false;

a=[1,2,3,4];
a.every(function(x){
    return x < 10;      //返回true
});
a.every(function(x){
    return x % 2 == 0;  //返回false,并非所有元素都能被2整除   
})

存在:some()
存在有一個(gè)數(shù)組元素的回調(diào)函數(shù)返回true的時(shí)候終止執(zhí)行并返回true,否則返回false。

a=[1,2,3,4];
a.some(function(x){
    return x % 2 == 0;  //返回true 
});
a.some(isNaN);    //false

reduce()和reduceRight()方法

遍歷數(shù)組,調(diào)用回調(diào)函數(shù),將數(shù)組元素組合成一個(gè)值
參數(shù)1:回調(diào)函數(shù):把兩個(gè)值合為一個(gè)
參數(shù)2:value,一個(gè)初始值,可選
reduce從索引最小值開(kāi)始
reduceRight反向,方法有兩個(gè)參數(shù)

var a=new Array(1,2,3,4,5,6);
console.log(a.reduce(function(v1,v2){
   return v1+v2;
}));              // 21
console.log(a.reduceRight(function(v1,v2){
   return v1-v2;
},100));          // 79

indexOf()lastIndexOf()方法

用于查找數(shù)組內(nèi)指定元素位置,查找到第一個(gè)后返回其索引,沒(méi)有查找到返回-1,indexOf從頭至尾搜索,lastIndexOf反向搜索。

var a=new Array(1,2,3,3,2,1);
console.log(a.indexOf(2));     //1
console.log(a.lastIndexOf(2)); //4
console.log(a.IndexOf(4));     //-1,找不到
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容