JavaScript学习(八)——数组

JS中的数组是一个对象。

一.创建对象

不传参数创建空数组

var data=new Array();

传入两个以上的参数的话,是会创建一个以参数为元素的数组

var data=new Array(5,2,0);

但是如果传入一个参数的话,会创建一个长度为参数的数组

var data=new Array(5);//长度为5的数组

二.向数组中添加元素——Js中向数组中添加元素比C++/C简单,直接使用数组下标赋值就可以了

data[0]=5;
data[1]=2;
data[2]=0;
data[5]=56;

三.返回数组长度的属性——如果是非连续赋值的数组那么返回的是最后面的元素下标+1,没有赋值那一部分为undefined,而且可以直接修改数组长度,变长那一部分未赋值的是undefined,变短的话,会舍掉超出部分的元素数值。

for(var i=0;i<data.length;i++){
    //if(data[i]!=undefined)
    document.write(data[i]+"</br>");
}

.字面量创建数组

var arr=[5,2,0];

五.Js数组中的每个位置可以放置任意类型的元素

var arr=[5,"JS数组真的奇葩",{
    name:"tbw",
    loving:"打球"},
function(){
    document.write("JS数组啥都能放,连函数都可以啊!!");
},
[1,1,1]];

 六.数组中常用方法

push(),向数组末尾添加一个或者多个元素,返回数组添加后新的长度

array.push(52,0,25,0)

pop(),把数组最后的一个元素删除,并将被删除的元素作为返回值返回

unshift(),向数组开头添加一个或者多个元素,并返回新的数组的长度

array.unshift(52,0,25,0)

shift(),可以删除数组的第一个元素,并返回被删除的元素

slice(),可以用来从数组中提取指定元素,把指定元素提取到一个新的数组返回,第一个参数是截取开始的位置索引,会包含这个开始的元素,第二个参数是截取结束位置的索引,最后返回的数组不会包含最后结束的元素。第二个参数省略不写的话,就是返回从包含数组一直到数组结尾的所有元素,如果第二个参数传递负数的话结束位置会从后往前计算,-n代表倒数第n个位置是结束位置(任然不包含)。

splice(),可以用于删除数组中的元素,会影响原数组,把指定下标的元素从原数组中删除,并将被删除的元素作为返回值返回,第一个参数表示开始位置的索引,第二个参数是删除元素的数量,第三个参数以及以后的参数是插入数组中的元素,这些元素会自动的插入到开始位置索引之前,没有长度限制。被删除的元素位置之后的元素会自动补齐。

conact(),可以连接两个或者多个数组,并将新的数组返回,不会对原数组产生影响

join(),可以把数组转换为一个字符串返回,不会影响原数组,在传参的时候可以指定一个字符串作为参数,这个字符串会成为数组中的元素的连接符,不传参的话会默认逗号为连接符,抹去逗号可以传空字符串

reverse(),翻转数组,直接修改原数组

sort(),对数组中的元素默认按照Unicode编码排序,修改原数组。即使对于纯数字的排序也会按照Unicode排序

ar arr=[5,20,0];
arr.sort();
arr.forEach(function(value,index,obj){
    document.write(value+" ");//value是正在遍历的数组   
});

所以为了正确的排序可以自己指定排序规则,我们可以在sort()中添加一个回调函数来指定排序规则,回调函数中需要定义两个形参,浏览器会分别使用数组中的元素作为实参去调用回调函数,使用的元素调用不确定,但是a一定是在b前面的元素值,然后浏览器会根据回调函数的返回值来决定元素的顺序,如果返回一个大于0的值,则元素会交换位置,如果返回一个小于0的值,则元素位置不变,如果返回一个0,则认为两个元素相等,也不交换位置。

下面的是一个升序排列回调函数

var arr=[3,4,11,5,2];
//重写排序函数
arr.sort(function(a,b){
    //前边的大
    if(a>b){
        return 1;
    }else if(a<b){
        return -1;
    }else{
        return 0;
    }
});

arr.forEach(function(value,index,obj){
    document.write(value+" ");
});

简化升序回调函数

var arr=[3,4,11,5,2];
//重写排序函数
arr.sort(function(a,b){
return a-b;
});

arr.forEach(function(value,index,obj){
    document.write(value+" ");
});

七.JS中遍历数组的方法除了循环之外还有forEach

var arr=[5,2,0];
arr.forEach(function(value,index,obj){
    document.write(value);//value是正在遍历的数组   
    document.write(index);//index是正在遍历数组的下标
    document.write(obj);//obj是正在遍历的数组
});

forEach方法需要一个函数作为参数,这种函数不是有我们调用,我们称为回调函数,浏览器会把遍历到的元素以实参的形式传进来,我们可以定义形参来读取这些内容,而且浏览器还会在回调函数中传递三个参数,第一个参数就是当前正在遍历的元素第二个参数是就是当前正在遍历的元素的索引第三个参数就是正在遍历的数组

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值