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,找不到