一、什么是数组:
数组数组就是一组数据的集合
其表现形式就是内存中的一段连续的内存地址
数组名称其实就是连续内存地址的首地址
二、数组的创建:
var arrayObj = new Array(); //创建一个数组
var arrayObj = new Array([length]); //创建一个数组并指定长度,注意不是上限,是长度
var arrayObj = new Array([element0[, element1[, ...[, elementN]]]]); 创建一个数组并赋值
要说明的是,虽然第二种方法创建数组指定了长度,但实际上所有情况下数组都是变长的,也就是说即使指定了长度为5,仍然可以将元素存储在规定长度以外的,注意:这时长度会随之改变。
三、数组对象中的三个属性:
1、length属性 (设置或返回数组元素的个数)
Length属性表示数组的长度,即其中元素的个数。因为数组的索引总是由0开始。
2、constructor属性 (返回对象的构造函数)
3、prototype属性 (允许你向数组对象添加属性或方法)
四、数组对象属性:
(1) indexOf():搜索数组中的元素,并返回它所在的位置。
var apple=["banner","apple","orange"]; document.write(apple.indexOf("orange")); document.write("<br/>");
(2) lastIndexOf():指定字符串值最后出现的位置,在一个字符串中的指定位置从后向前搜索。
var org=["banana","apple","orange","apple"]; document.write(org.lastIndexOf("apple")); document.write("<br/>");
(3) map():通过指定函数处理数组的每个元素,并返回处理后的数组。 获取元素的平方根
var numbers = [4, 9, 16, 25]; document.write(numbers.map(Math.sqrt)); document.write("<br/>");
(4) filter():判断一个数组的元素,与给出的值做一个比较,顺便符合条件作出筛选
var ages=[23,31,56,63]; function cha(age){ return age >= 32; } document.write(ages.filter(cha)); document.write("<br/>");
(5) every():类似上面filter,做一个真假的判断
var age = [23,18,33,10]; function cha(agg){ return agg>9; } document.write(age.every(cha)); document.write("<br/>");
(6) some():给一个参考值,判断这段字符串中有没有能达到要求的
var age=[12,11,19,4]; function che(att){ return att >20; } document.write(age.some(che)); document.write("<br/>");
(7) reduce():计算这串字符串之和
var num=[11,22,33,44]; function Sum(total, num){ return total + num; } document.write(num.reduce(Sum)); document.write("<br/>");
(8) reduceRight():与reduce的功能一样,不同的reduceRigth是从数组的末尾向前累加的
var num=[11,22,11,22]; function sum(tot,num){ return tot+num; } document.write(num.reduceRight(sum)); document.write("<br/>");
(10) join():将数组中的每一个元素用指定的字符串连接起来,返回字符串
var arr = ["a","b","c"]; document.write(arr.join(","));
(11) slice():接受一个或两个参数,参数对应的是要返回项的起始位置和结束位置,若只有一个参数,该方法返回从参数指定位置到数组结尾的所有项,如果有两个参数则返回起始位置到结束位置之间的项但不包括结束位置项,返回的结果是一个新的数组,原数组不变
var arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G']; alert(arr.slice(0, 3)); // 从索引0开始,到索引3结束,但不包括索引3: ['A', 'B', 'C'] alert(arr.slice(3)); // 从索引3开始到结束: ['D', 'E', 'F', 'G']
(12) push():向数组末尾添加若干元素,返回添加元素后数组的长度
var arr = [1,2]; alert(arr.push('a','b'));
(13) pop():删除数组末尾最后一个元素,返回被删除的元素,若数组为空则返回undefined
var arr = [1,2,3]; alert(arr.pop());//返回被删除的元素3 var arr1 = []; alert(arr1.pop());//返回undefined
(14) unshift():在数组头部添加若干元素,返回添加元素后数组的长度
var arr = [1,2,3]; alert(arr.unshift("a","b"));
(15) shift():删除数组头部的第一个元素,并返回被删除的元素,若数组为空则返回undefined
var arr = [1,2,3]; alert(arr.shift());
(16) sort():对数组进行排序,返回排序以后的数组,默认把所有元素转化为字符之后再进行排序,排序以后会改变原数组
var arr = ["3","2",11]; alert(arr.sort());
(17) reverse():对数组中的数据进行反转,返回反转后的数组
var arr = ["333","222"]; alert(arr.reverse());
(18) splice():从指定位置删除若干元素,然后再从该位置添加若干元素,结果返回被删除的元素,第一个参数表示起始删除的位置,第二个参数表示要删除元素的个数,之后的元素表示要添加的元素
var arr = ["a","b","c"]; alert(arr.splice(1,2,"d","e"));//从位置1开始删除2个元素,在1位置添加"d","e"两个元素,返回"b","c" alert(arr);//arr数组变为a,d,e alert(arr.splice(0,3));//从位置0开始,删除3个元素,返回"a","d","e" alert(arr);//arr数组为空
(19) concat():把当前数组与另一个数组连接起来,并返回新的元素,原来的数组不被改变,concat可以接收任意个元素和数组,并把数组拆开放入新的数组中
var arr = ["a","b","c"]; alert(arr.concat([1,2,3]));//数组arr不变,返回["a","b","c",1,2,3] alert(arr.concat([1,2,[3,4]]));//返回["a","b","c",1,2,3,4]