JS中数组被认为是一种对象,慢慢的,怎么忽然感觉,JS中只要可以独立出来的概念怎么都可以当成对象来解释呢?有点儿怀疑。继续学吧。先来总结一下JS中数组是如何具体使用的。
一、创建
数组的创建在JS中和Object基本上是一样的。他可以通过new关键字来声明,也可以通过字面量的方法来创建。JS中数组创建只支持一维数组。
1、new
var box=new Array();//new 关键字可省略,内部可对数组进行初始化,或者声明元素的个数,这点其它语言相同
2、字面量
var box=[]; //同样也可以进行初始化
3、注意:1、默认数组中每个元素用‘,’分开,可以用Join()方法是用不同的分隔符对数组元素进行分割,例如:Join(‘|‘)
2、JS中数组元素可以为任意类型,甚至可以为数组。创建一个复杂类型的数组:
var box = [ { //第一个元素为包含name和age属性的一个对象 name: 'wyy', age:22 }, '计算机编程', [1, 2, 45, 6,new Object()], //字面量方法创建一个数组,内包含一个对象 25 + 34, new Array(6,7,8) //这里为一个数组 ]
二、元素赋值和调用
1、赋值
在为数组元素进行赋值时,可以直接初始化为各个元素进行赋值,但这种方式不够灵活,如果我们想动态为数组添加元素时,这个时候需要的就是在外部直接为数组中的元素进行赋值。可以利用数组中各个元素的name为其赋值,可以利用元素下标进行赋值。
var box=[]; box.name='wyy'; box.age=22; alert(box['name']); //这里alert(box)直接弹出数组box的话不支持。会弹出空
或者采用数组下标的方式
var box=[]; box[0]='wyy'; box[1]=22; alert(box); //利用下标方式可以弹出box中的元素内容
鉴于上述两种方式的差异所以,通常赋值时,我们采用索引下标进行赋值。那么根据赋值的方式,数组在调用的时候原理也是一样的。通过元素名称和索引下标来进行调用。同时,这里可以用length属性来获得数组元素的个数和数组中最后一个元素的值。
三、对象和操作方法
对象方法
1、栈
push:在数组末尾添加一个元素 语法:box.push(‘123‘) 注意的是如果是alert(box.push(‘123‘))会返回最新数组的长度
pop:移除数组末尾元素:语法 alert(box.pop())//返回移除元素的值,这里和push有区别
2、队列
push:同栈中的push方法
shift:移除最先进去的元素 语法:alert(box.shift())//打印出移除元素
unshift:为数组前端添加一个元素,并返回新数组的长度。box.unshift(‘123‘)//存在不兼容现象
3、排序
reverse:返回一个逆序排列的数组,原数组也被逆序了,说明操作的是数组的引用
sort:从小到大排序,这个函数在使用前需要对其排序规则进行声明。可正负颠倒。
操作方法:
1、concat:基于原来的数组再追加一个新的数组
2、slice()和spice()这两个方法用途很广,参数不定,规则也不定,使用时,需要仔细区分。
slice主要用于取值,但不影响原来数组的值。
spice主要用于删除数组中指定的元素。例如:Box.splice(1,3)//从第一个元素开始,取3个元素,并且将原数组中这些元素删掉。同时也可以用来插入元素,例如:
Box.splice(1,0,‘wlj‘,‘dsf‘)//在第一个元素后插入后面的元素
var box1= box.splice(1,0,‘hello‘); //这里第二个参数为0,所以没有要删除的位置,那么含义转变成在第一个位置后面插入一个元素‘hello’。