js学习笔记(八)数组
1、关联数组是将值和字符串关联在一起,而常规数组是将值和非负整数关联在一起。
2、数组的创建。
1)用构造函数 Array()创建
var a=new Array(); //创建了一个空数组
var a =new Array(10); //如果只有一个数字参数,则表示的是该数组的长度,数组中每个元素的值都是undefined,此时数组的 length也被指定为了这个值
var a=new Array(“hello”,100,45,”world”) //如果有多个参数,则表示的是数组的前n个元素
2)用数组直接量创建
var a=[]; //创建了一个空数组
var a=[“hello”,100,45,”world”] //创建了一个有元素的数组
3、js数组的下标从0开始。
js数组的下标必须是大于等于0并小于2的32次方减1的整数。如果使用的数字太大或使用了负数、浮点数(或布尔值、对象或其他值),js会将它转化为一个字符串,用生成的字符串用作对象属性的名字,而不是数组的下标,此时它已不属于一个常规数组的元素了,而是一个对象的属性。
js可以在任意时刻改变数组的长度,例如要增加一个数组元素,只要用新的数组下标给它赋一个值即可。
js中的数组是稀疏的,即数组的下标不必落在一个连续的数字范围内,只有已经存在了的数组元素才会分配到内存。
4、数组的length属性既可以读也可以写,如果给length属性设置了一个比它当前值小的值,那么数组将会被截断,这个长度之外的数组元素都会被抛弃。如果length的值设置的比当前要大,那么新的、为定义的数组元素就会被添加到数组末尾以达到新指定的数组长度。数组也可以用字符串来作为键名,但是用字符串键名添加数组元素后,数组的length貌似不会改变。
5、数组的方法()
1、 join()方法,可以把一个数组的所有元素都转化成字符串,然后再把他们连接起来,可以指定一个字符串参数来作为连接符,如果不传入参数,则默认连接符为逗号。如:
var a=[1,2,3];
var a_string=a.join(); //值为 1,2,3 (类型为string)
var a_string=a.join(“*”); //值为1*2*3 (类型为string)
2、reverse()方法,将颠倒数组元素的顺序返回颠倒顺序后的数组,该数组是在原始数组的基础上进行操作的,相当于把原始数组进行了修改,它并不会创建一个新数组,如
var a=[1,2,3];
a.reserve(); //此时数组a已经变为了[3,2,1]
3、concat()方法,向数组添加任意多个元素,其参数即为要添加的新的数组元素,如果其参数是一个数组,则该数组将被展开为一个个元素添加到原始数组,但最多只能展开一层,如
var a=[1,2,3];
var a=a.concat(4,5); //此时a变为[1,2,3,4,5]
var a=a.concat([4,5]) //结果为[1,2,3,4,5]
var a=a.concat(4,[5,[6,7]]) //结果为[1,2,3,4,5,[6,7]]
4、slice()方法,返回的是指定数组的一个片段。它的第一个参数指定了这个数组片段从数组的第几个元素开始,第二个参数指定了这个片段到数组的第几个元素结束,但并不包含这个位置上的元素,0表示的是第一个元素。如果只有一个参数则表示从这个参数指定的位置开始到数组的剩下的所有元素。如果参数有负数,则是表示数组的倒数第几个元素,如-1为数组的最后一个元素,-4为数组的倒数第4个元素
var a=[1,2,3,4,5,6];
a.slice(0,3) // 返回[1,2,3]
a.slice(3) //返回[4,5,6]
a.slice(1,-1) //返回[2,3,4,5]
a.slice(-3,-2) //返回[4]
5、splice()方法,可以删除数组元素,也可以添加数组元素
第一个参数为要删除的数组元素的起始位置,第二个参数为要删除的数组元素的长度(注意,slice方法的第二个参数不是长度),如果只有一个参数,则删除以该参数为起始位置以后的所有数组元素。splice的前两个参数指定了要删除的数组元素,其后还可以有更多的参数,表示的是要插入的新的数组元素,插入的位置是由第一个参数指定的。注意,splice()方法会修改原始数组。该方法返回的是被删除的数组元素所组成的数组
var a=[1,2,3,4,5,6,7,8]
a.splice(4) //返回[5,6,7,8] 此时a为[1,2,3,4]
a.splice(1,2) //返回[2,3] 此时a为[1,4]
a.splice(1,0) //返回空数组 此时a为[1,4]
var a=[1,2,3,4,5]
a.splice(2,0,”a”,”b”) //返回空数组,此时a为[1,2,”a”,”b”,3,4,5]
a.splice(2,2,[1,2],3) //返回[“a”,”b”] 此时a是[1,2,[1,2],3,3,4,5]
splice()方法与concat方法不同,它插入的数组不会被展开
6、push()方法和pop()方法
push()用于向数组中添加一个或多个元素,其返回的是修改后的数组的长度,注意与concat()方法相区别开来(concat方法返回的是新的数组,并且不会修改原始数组);pop()方法用于删除数组的最后一个元素,不带参数,返回的是它删除的那个元素的值。push()和pop()方法都会修改原始数组
var a=[];
a.push(1,2); //返回2,此时a为[1,2]
a.pop(); //返回2,此时a为[1]
a.push(3); //返回2,此时a为[1,3]
a.pop(); //返回3,此时a为[1]
a.push([4,5]) //返回2,此时a为[1,[4,5]]
7、unshift()和shift()方法
unshift()和shift()方法与push()和pop()方法相似,只不过是在数组的前面插入或删除元素