JavaScript 数组详解以及常用方法

数组是值的有序集合,每个值叫做元素,每个元素的位置叫做索引,数组索引从0位开始,JavaScript中的数组是无类型的,数组元素可以是任意的类型。

创建数组


直接量创建数组

var emptyArray = [];//创建一个元素为空的数组
var numberArray = [1,2,3,4,5,6,7,8,9,10];//创建一个有10个数值的数组
var misc = [0.1,false,"array"];//三个不同类型元素的数组

数组中的元素不一定是常量,也可以是任意的表达式

var baseNumber = 12345;
var baseNumArr = [baseNumber, baseNumber + 10, baseNumber -10];//元素为表达的数组

如果省略数组直接量中的某个值,省略掉的元素将会被赋予undefined

var num = [1,,3];//三个元素的数组,中间的元素为undefined
var unders = [,,];//两个元素的数组,全部都是undefined
//数组直接量中允许逗号[,]结尾,所以上面的unders只有两个元素

使用构造函数Array()创建数组
调用Array()函数时有一个数值参数时,它将指定数组的长度,如果调用Array()函数时传入了两个或多个参数将会被作为数组的元素。

var array = new Array();//创建一个空数组;
var array = new Array(5);//创建一个长度为5的数组
//这样创建的数组只是用来为数组预分配一个数组空间,数组中是没有储存值的
var array = new Array(1,2,3,"array",true);//创建数组,将传入Array()函数的参数作为数组的元素

操作数组[读和写,添加和删除]


操作数组使用 [] 操作符来访问数组中的元素。方括号里面是一个返回非负整数的任意表达式。使用这种语法可以实现对数组的 操作。

var array = ["hello","world"];//创建有两个元素的数组
var hello = array[0];//读取数组中索引为0的元素,⇒ hello
array[1] = "你好";//修改索引为1的元素,array = ["hello","你好"]
var i = 3;
array[i] = 3;//添加索引为i的元素;
delete array[i];//删除索引为i的元素

数组长度


每一个数组都会有一个 length 属性,这个属性将数组和常规的JavaScript对象区别开来,针对 稠密数组 length属性代表了数组中的元素个数,length的值比数组中的索引大1;

var empty = [];//空数组
empty.length;//⇒ length = 0;

[1,2,3].length;//⇒ 该数组中最大的索引为2,length = 3;

当为一个数组元素赋值时,当前元素索引的值大于或等于length属性时,length属性的值将会被设置为当前元素索引+1。
当设置一个数组中的length属性值为一个小于当前数组索引的正整数N时,当前元素中索引值大于或等于N的元素将会被删除。
对数组元素使用delete删除元素时,不会修改length属性,该数组将会变成稀疏数组

http://www.cnblogs.com/ziyunfei/archive/2012/09/16/2687165.html

var array = [1,2,3,4,5];//包含5个元素的数组
array.length = 4;//array为[1,2,3,4]
array.length = 0;//删除了所有的元素,array为[]
array.length = 5;//array长度为5,但是元素为空,等同于new Array(5);

var delArray = [1,2,3,4,5];//length为5
delete delArray[2];//删除索引为2的元素;
delArray.length;//length依然为5,delArray为[1,2,,4,5]

遍历数组


使用For循环遍历数组

var forArray = ["a","b","c","d"];//字符串数组
var copyArray = [];//用于复制的数组;
for(var i = 0; i < forArray.length; i++){//循环
    copyArray[i] = forArray[i];//将当前循环的索引对应的元素拷贝到新数组对应索引的位置
}

检测并跳过稀疏数组中的undefined和null值

var forArray = ["a","b","c","d"];//字符串数组
var copyArray = [];//用于复制的数组;
for(var i = 0; i < forArray.length; i++){//循环
    if(!forArray[i]){//判断当前索引下元素是否为undefined或null
        continue;//为空的话跳过本次循环
    }
    copyArray[i] = forArray[i];
}

常用方法


Array.join()
join()方法会将数组中所有元素都转化为字符串,并连接在一起,返回连接之后的字符串,join方法接收一个可选参数,用于指定元素之间的分隔符,参数为空时,分隔符默认为“,”(逗号),和 String.split() 方法相反,split()方法是将指定分隔符的字符串拆分为数组;

var array = ["a","b","c",1,2,3]

var str = array.join();//调用方法不传参数,str为"a,b,c,1,2,3"

var str2 = array.join("-");//使用[-]作为元素之间的分隔符,str为"a-b-c-1-2-3"

Array.reverse()
reverse()方法会将数组中的元素颠倒顺序,返回逆序数组。reverse()方法不会创建新的数组,而是在原本的数组上做排序。

var array = [1,2,3]

array.reverse().join("-");//结合reverse()和join(),输出"3-2-1"

Array.sort()
sort()方法将数组中的元素排序,同样只对原数组操作,当调用sort()方法时不带参数数组元素默认以字母表顺序排序,如果数组中包含undefined值,将会被排到数组的最后。

var array = ["c","a","b","d"];

array.sort().join();//输出"a,b,c,d"

也可以通过调用sort()方法时传入一个比较的函数来实现自定义排序,数值排序在前应当返回负数,排序在后返回正数,数值相等返回0

var array = [12345,12,34,2,231];
array.sort();//输出Array [ 12, 12345, 2, 231, 34 ]

//使用自定义排序
array.sort(function(a,b){
    return a-b;//返回正数,负数,0
});
//输出Array [ 2, 12, 34, 231, 12345 ]

Array.push()
push()方法在数组的尾部添加一个或者多个元素,并返回数组型的长度。

var array = ["a","b","c"];

array.push(1,2);//返回5;

//array 现在为["a","b","c",1,2];

Array.pop()
pop()方法删除数组最后一个元素,减小数组长度,并返回方法删除的值,push()和pop()方法都是修改原始数组,不会生成修改后的新数组。

var array = ["a","b","c"];

array.pop();//返回"c";

//array 现在为["a","b"];
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值