Ⅰ.数组的定义方法
数组的定义方法有两个
<1>.字面量方法定义数组
var arr = [ ];
<2>.使用构造函数定义数组
var arr = new Array();
这两种方法都来自Array.prototype
例子:
<1> var arr=[1,5,4,8];
<2> var arr = new Array(9)
在<2>里有两个要注意的点
1.用new Array()方法定义数组,当只传输一个值时,这个值会变成数组的长度,没有具体的值
2.并且只传输一个值时不能传有小数点的数,不然会报错
这两个可以在后台操作一下加深记忆,其他跟字面量方法一样
Ⅱ .数组常用的方法(重点来了)
一:改变原数组的七种方法
1.数组的push(添加数据)方法:在最后一位添加(无上限)
下面是系统实现push方法的具体代码
Array.prototype.push = function(){
for(var i = 0 ; i < arguments.length; i++ ){
this[this.length] = arguments[i];
}
return this.length;
}
是利用arguments.length—>数组的长度来实现的
例子:
var arr = [1,2,3];
在后台:
arr.push(1111,454)
arr = [1,2,3,111,454]
2.数组的unshift(添加数据)方法:在最前面一位添加(无上限)
例子:
var arr= [54,84];
在后台:
arr.unshift(1111,454)
arr=[111,454,54,84]
3.数组的pop(剪切数据)方法:将数组的最后一位剪切掉(只能一位一位的剪)
例子:
var arr = [1,4,8];
在后台:
arr.pop()
arr=[1,4]
4.数组的shift(剪切数据)方法:将数组的最前面一位剪切掉(只能一位一位的剪)
例子:
var arr= [54,84,88,64];
在后台:
arr.shift()
arr=[84,88,64]
5.数组的reverse方法:将数组里的数据顺序调转
例子:
var arr= [54,84,5,88]
在后台:
arr.reverse()
arr= [88,5,84,54]
6.!重点:splice:切片方法,可以实现删除数据也可以实现添加数据 !
arr.splice(从第几位开始,截取多少的长度,在切口处添加新的数据)
spilce系统后台调用数据的代码:
splice = function(position){
position += position > 0 ? 0 : this.arr.lenth
position >= 0 || position < arr.length
}
(1):删除数据
var arr = [1,2,3,4,6];
在后台:
arr.splice(0,3) //切掉了[1,2,3]
此时:arr=[4,6]
(2)添加数据:顺序是数组顺序+1
var arr = [1,2,3,4,6]; // 在4和6之间添加5,即顺序是第3位数据4的后面添加5
在后台:
arr.splice(4,0,5)
此时:arr =[ 1,2,3,4,5,6]
ps: 在这里说明一下,数组顺序可以有负数
在后台:arr.splice(-1,0,5)
此时:arr =[ 1,2,3,4,5,6]效果跟上面一样;
7.!! 重中之重 : sort:给数组内的数据排序 !!
普通升序: 在后台: arr.sort()
普通降序: 在后台: arr.sort().reverse()
但是有 bug !!!!
例子:
var arr= [1,2,-5,10,4];
在后台:
arr.sort()
(5) [-5, 1, 10, 2, 4]
这不是我们想要的升序
!!! 因此arr.sort()提供了方法接口,让开发者自己定义规则 !!!
- 有序排列规则:
<1>.必需写两个参数,方便后面对两两数据对比大小排序。
传[1,2]对比,然后[1,-5]…[2,-5]…重复
<2>.看返回值:
①当返回值为负数时,那么前面的数放在前面
②为正数,那么后面的数放在后面
③为0,不动
下面来看看实现升序:
var arr= [1,2,-5,10,4];
arr.sort(