7.1數組數組
①JavaScript數組有多種使用方式,一個數組中的元素沒必要徹底是同一種類型app
②數組的兩種構造方法:函數
a.數組的構造函數spa
var arrayname=new Array();//空數組 var arrayname=new Array(4);//長度爲4的數組 var arrayname=new Array("Thomas","Roger",-3,"plastic"); //4個元素的數組
b.數組字面量表示法code
var arrayname=[];//空數組 var arrayname=["Thomas",true,-3];//三個元素的數組 var arrayname=[3];//一個元素的數組
7.2數組的屬性(由於數組是JavaScript中的對象,因此它纔有屬性和方法)對象
這裏只是講解length屬性,其餘的後面章節進行介紹。索引
var stu=["Thomas","Roger","Amber","Jen"]; stu.length=2;//縮短數組,如今的數組只有前兩個元素 stu.length=7;//增加數組,在末尾添加了5個元素,它們的值是未定義的。 stu[9]="Mary";//增加數組,長度爲10,索引爲9即第十個元素值爲Mary,其餘的爲未定義
7.3數組的方法ip
①sort方法字符串
②concat()方法it
③slice(start,stop)方法:獲取一個數組中的子數組,自定義開始索引和結束索引,子數組包括開始索引,沒有結束索引。
④splice(開始刪除索引,刪除元素數目,[添加的元素])方法
var arr=["orange","apple","pear","grape"]; var arr1=arr.splice(2,1,"watermelon","plum"); arr1=["orange","apple","watermelon","plum","grape"];
⑤indexOf()和lastIndexOf()方法:
a.indexOf([字符串])和lastIndexOf([字符串]),用於在數組正序和逆序搜索給定字符串,並返回該元素的索引。注意當元素不在數組中時,將會返回-1而非0,由於0是有效的索引。
b.indexOf([字符串],數字)和lastIndexOf([字符串],數字),用於在數組中正序和逆序從指定索引位置開始搜索給定字符串,並返回該元素的索引。
c.這兩個方法都是使用===運算符來肯定是否找到元素,所以不會執行類型轉換,並且必需要是精確匹配才表示搜索成功。例如:
var nums=["2",5,22,3]; var result=nums.indexOf(2);//第一個元素"2"是一個字符串不能與數字2相匹配 result=-1(不是0)
⑥every(),filter(),forEach(),map(),some()(它們是迭代函數)
a:every()爲每一個數組元素執行參數中提供的函數,若是對於全部元素,該函數都返回true,則最終結果返回true
b:some()爲每一個數組元素執行參數中提供的函數,若是對於任意一個元素,該函數的返回結果爲true,則最終結果返回true
c:filter()爲每一個數組執行參數中提供的函數,並將該函數爲其返回true的各個元素做爲數組返回
d:map()爲每一個數組元素執行參數中提供的函數,並將每次函數調用的結果做爲數組返回
e:forEach()爲每一個數組元素執行參數中提供的函數,不返回任何值
例題:函數pass_grades()用於決定一個學生全部記錄的成績是否都大於或等於70
function pass_grades(item_value,item_index,arr_name){ return (item_value>=70); } var grades=[94,65,71,84,99]; var the_result1=grades.every(pass_grades); var the_result2=grades.filter(pass_grades); var the_result3=grades.some(pass_grades); var the_result4=grades.map(pass_grades); var the_result5=grades.forEach(pass_grades); the_result1=false; the_result2=[94,71,84,99]; the_result3=true the_result4=[true,false,true,true,true]
a---函數pass_grades()在迭代過程當中將返回下列五個結果:true,false,true,true,true。由於every()方法要求全部返回值都爲true才能返回true,因此結果爲false
b---調用filter()將返回一個數組,它包含了全部返回值爲true的元素。在本例中該數組爲[94,71,84,99]
c---調用some()將返回true,由於它只要求其中的一個返回值爲true便可
d---調用map()將返回一個數組,它包含了每次調用的結果
e---調用forEach()什麼也不返回,它只是爲數組中的每一個元素運行函數
⑦reduce()和reduceRight()方法
這兩個方法也會遍歷數組的全部元素,但它們將根據返回值構建最終結果。像迭代方法同樣,使用函數做爲參數,做爲參數的函數將接收兩個參數:以前的返回結果和下一個元素。第一次循環時將把第一個元素和第二個元素分別做爲函數的兩個參數傳入。
function sub_values(pre_value,next_value){ return (pre_value-next_value); } var nums=[2,4,8,16,32]; var result1=nums.reduce(sub_values); result1=-58; var result2=nums.reduceRight(sub_values); result2=2;
當調用reduce()時,從前向後遍歷全部值,2-4=-2,-2-8=-10,-10-16=-26,-26-32=-58
當調用reduceRight()時,從後向前遍歷,32-16=16,16-8=8,8-4=4,4-2=2
⑧toString(),toLocaleString(),valueOf():
這三個方法將高效地將數組中的全部元素鏈接成一個字符串,並使用逗號做爲分隔符。若有必要,toLocaleString()能夠返回一個本地化版本的值。
7.4嵌套數組
定義嵌套數組:
①
var stu=[["Thomas",92,90],["Roger",87,78],["Amber",81,85]];
②
var stu=new Array(new Array("Thomas",92,90), new Array("Roger",87,78), new Array("Amber",81,85));