1:创建数组:
Array对象:var数组名称=new Array();//创建一个空的数组
var 数组名称=new Array(size);//创建size个undefind成员的数组
var 数组名称=new Array(element0,element1,‘’‘’‘’‘elementn);//创建n个已知的数组
简写:var数组名称=[element0,element1,‘’‘’‘’‘,elementn];
2:读取数组
语法:数组名称[索引]//索引都是从0开始的
循环读取:方法一:for循环
例:var a=[15,20,"天"];
for(var i=0;i<a.length;i++){
document.write(a[i]);
}//var最好换为let,避免变量i泄露到全局变量
方法二:for in循环
例:var a=new Array(15,20,"天");
for(var k in a){
document.write(a[k]);
}
alert(k); //var最好换为let,避免变量k泄露到全局变量
3:数组的常用属性
1:length设置或返回数组中元素的数目
注 数组length属性他不是只读的。我们还可以利用这个属性可以从数组末尾移除或添加项
例:var colors=["red","blue","green"];
colors.length=4;
alert(colors[3]);//输出为underfind 相当与添加了一个空的项
colors[colors.length]="back";//在最后添加了一项 为back
alert(colors);//输出为"red","blue","green","back"
2:constructor 引用数组对象的构造函数
3:prototype
4:检测数组
5:数组常用的方法
1:添加
A:push() 可以接收任意数量的参数,把他们逐个添加到数据末尾并返回修改后的 数组长度
var arr=["xiaohu","uzi","ming"];
var count=arr.push("letme","zztai");
console.log(count);//5
console.log(arr);//["xiaohu","uzi","ming","letme","zztai"]
B:unshift() 将参数添加到原数组开头,并返回数组的长度
var arr=["xiaohu","uzi","ming"];
var count=arr.unshift("letme","zztai");
console.log(count);//5
console.log(arr);//["letme","zztai","xiaohu","uzi","ming"]
C:concat() 将参数或数组添加到原数组中。这个方法会先创建当前数组一个副本,然后将接收到的参数添加到这个副本的末尾,最后返回新构建的数组。在没有给 concat()方法传递参数的情况下,它只是复制当前数组并返回副本。
var arr=["xiaohu","uzi","ming"];
var arrcopy=arr.concat("letme",["zztai","mlxg"]);
console.log(arrcopy);//["xiaohu","uzi","ming","letme","zztai","mlxg"]
console.log(arr);//["xiaohu","uzi","ming"]
传入的不是数组,则直接把参数添加到数组后面,如果传入的是数组,则将数组中的各个项添加到数组中
2:删除
A:shift():删除原数组第一项,并返回删除元素的值;如果数组为空则返回undefined 。
var arr=["xiaohu","uzi","ming","letme","zztai","mlxg"] ;
var item=arr.shift();
console.log(item);//xiaohu
console.log(arr);//["uzi","ming","letme","zztai","mlxg"]
B:pop() 去除数组末尾最后一项,减少数组length的值,然后返回移除的项
var arr=["xiaohu","letme","uzi","ming","mlxg"];
var item=arr.pop()
console.log(item);//mlxg
console.log(arr)//["xiaohu","letme","uzi","ming"]
3:子数组(添加替换原数组中一段数组)
A:splice()
B:slice()
4:数组排序
A:sort() 按从小到大的顺序排列数组(在排序时,sort会调用toString方法,然后比较字符串)
var arr=[15,25,32,99];
var compare=arr.sort();//调用toString方法
console.log(compare);//[15,25,32,99]返回的是字符串,不再是数字
故要对数字进行排序,sort()方法可以接收一个比较函数作为参数,以便我们指定哪个值位于哪 个值的前面
function compare(){
if(value1>value2){//return的值为1则大的在后面
return 1;
}else if(value1<value){//return的值为-1则小的在后面
return -1;
}else{//相等
return 0;
}
对sort()排序的的深入研究(对对象进行排序实例)
A:假如我们有一组学生对象,我们需要按要求对他进行排序
var students=[
{name:xiaohu,age:20;score=86},
{name:letme,age:21;score=88},
{name:uzi,age:23;score=90}
]
A考点:Array.sort(fun)
fun是一个函数,排序根据这个函数返回值来进行判断,如果返回值-1(小于0)表示两个元素不需要交换位置,1(大于0)表示要用交互位置,0表示相等,实际上<=0等效.
B注意点
a:对原数组进行操作,会改变原数组的值
b:调用toString方法,所以默认按照字符编码排序
C:想要完成值比较排序,必须传入sort参数(函数)进行规制制定:
function sortRule(a,b) {
return a-b; // 如果a>=b,返回自然数,不用交换位置
}
arr1.sort(sortRule);
假如我们要排序的不是一个数组而是一个对象时
var students=[
{name:"xiaohu",age:20,sco:86},
{name:"letme",age:21,sco:88},
{name:"uzi",age:23,sco:90},
{name:"mlxg",age:21,sco:99}
]
function sortBy(field) {
return function(a,b) {
return a[field] - b[field];
}
}
console.log(students.sort(sortBy("age")));//按age
B:reverse() 反转数组顺序
var arr=[15,5,13,1]
console.log(arr.reverse()); //[1,13,5,15]
console.log(arr); //[1,13,5,15]这里不是num是string
5:数组的转换
A:toString() 转换为字符串返回
B:toLocaleString() 转换为本地格式的字符串并返回
C:join("separator")
A:将数组的元素组成一个字符串,以“separator”作为分隔符连接
例:var arr=new Array(15,20,"天");
console.log(arr.join());//15,20,天
console.log(arr.join("-"));//15-20-天以指定分隔符连接
console.log(arr);//[15,20,天]原数组不变
B:还可以实现重复字符串,只需传入字符串和重复次数即可
例:function repeatSring(str,n){
return newArray(n+1).join(str)
}
console.log(repeatString("he",3));//hehehe
6:位置方法
A:indexof() 和lastIndexOf() 从数组起始位置开始查找或最后位置
(1)定义和用法: indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。
(2) 语法: stringObject.indexOf(searchvalue,fromindex)
该方法将从头到尾地检索字符串 stringObject,看它是否含有子串 searchvalue。开始检索的位置在字符串的 fromindex 处或字符串的开头(没有指定 fromindex 时)。如果找到一个 searchvalue,则返回 searchvalue 的第一次出现的位置。stringObject 中的字符位置是从 0 开始的。
(3)参数描述:
a:searchvalue 必写 要检索的字符串的值
b:fromindex 可选的整数参数。规定在字符串中开始检索的位置。它的合法取值是 0 到 stringObject.length - 1。如省略该参数,则将从字符串的首字符开始检索。
(4)提示和注释 注释: a: indexOf() 方法对大小写敏感!
b:注释:如果要检索的字符串值没有出现,则该方法返回 -1。