为什么要使用数组?
当我们需要表示多个数组时,一个一个定义十分不方便。比如:一个班级中所有人的名字。所有门店的年销售记录,一个门店一年的日销售额。
数组的概念
一组数据的集合。
在数组中可以存放任意类型的数据。每一个数据我们称之为元素。
每一个元素在数组中是有编号的,这个编号就称之为下标。
声明定义数组
1.构造函数
var arr = new Array();
//还可以在定义数组中,定义数组中保存的数据。
var arr = new Array(10,20,30)
//注意 这里的10不再是一个元素,则是数组的长度。
var arr = new Array(10)
【注意】通过构造函数创建数组时,如果传入的数据只有一个,且刚好是一个数字,则表示,定义数组的长度。
2.字面量方式
var arr = [];
//还可以在定义数组中,定义数组中保存的数据。
var arr = [10,20,30]
数组的属性和方法
长度
使用arr.length
可以获取数组的长度.
下标的范围:0 ~ length-1
var arr = [10,20,30];
console.log(arr.length);
访问元素
使用arr[下标]
就可以访问元素。
方法
- push(重点)
在元素的末尾处添加元素,会修改原数组
arr.push(元素)
- pop
从元素的末尾删除一个元素,会修改原数组,返回删除的元素。
var res = arr.pop() //res 表示 被删除的元素,也就是原数组中最后一个元素。
- shift
从数组的头部删除一个元素,会修改原数组,返回删除的元素。
var res = arr.shift(); //res 表示 被删除的元素,也就是原数组中第一个元素。
- unshift
在数组的头部添加一个元素,返回值是插入后,数组的长度。
var res = arr.unshift(元素) //res 是插入后数组的长度。
- concat
将两个数组中的元素合并为一个新数组,合并完成后,不会修改原数组。
//newArr为新数组, arr1,arr2为要合并的两个数组 var newArr = arr1.concat(arr2);
- slice
获取数组中指定区域的元素
//start : 开始的位置, end:结束的位置、 含头不含尾
//举例:arr.slice(1,3) 获取的元素 arr[1] arr[2] 不包含arr[3]
arr.slice(start,end)
- join
将数组中的元素,用传入的分隔符(字符串)拼接成一个新的字符串。
var str = arr.join("|");
// | 就是分隔符。 每个元素最后拼接成字符串时,之间用|分割。
// str 就是最后拼接成的字符串
//举例 [10,20,30].join("&") 返回的字符串为: 10&20&30
- reverse
反转数组,会影响原数组。
var arr = [10,20,30];
arr.reverse();
//arr 的值为:[30,20,10];
- sort
对数组进行排序,相当于遍历数组中的每一个元素,让当前元素与后面元素进行比较。比较的规则默认是 谁大谁在后面。
var arr = [10,30,40,20];
arr.sort();
//arr [10,20,30,40]
【注意】排序是按照Unicode编码排序的,不是按照数字的大小。
var arr = [12,3,2];
arr.sort();
//结果: [12,2,3];
自定义规则:
传入一个函数。 函数定义两个参数,第一个参数表示当前元素,第二个参数表示下一个元素。相当于,让数组中每一个元素都执行一遍该函数。执行时,该元素会变成第一个参数,下一个元素会传入第二个参数。
这个函数返回值如果大于0,则认为第一个数比较大,如果小于0,则认为第二个数比较大。会将大的数放在后面。
var arr = [12,3,2];
arr.sort(function(a,b){
return a-b;
});
//结果:[2,3,12]
//倒叙排列。
var arr = [12,3,2];
arr.sort(function(a,b){
//将 a-b 修改为 b-a
return b-a;
});
//结果:[12,3,2]
splice(重点)
删除并添加新元素
arr.splice(start,length,数据1,数据2...)
// start : 开始的位置
// length:从start开始,删除的长度
//数据1,数据2 将它们添加到start位置上。
新增
var arr= [10,20,30]; arr.splice(1,0,40); //将40添加到下标为1的位置上, 0:不删除元素。
删除
var arr= [10,20,30];
arr.splice(1,2);
//从下标为1的地方开始,删除2个元素。 只有两个参数说明不添加新元素。
修改
var arr= [10,20,30];
arr.splice(1,1,40);
//从下标为1的地方开始,删除1个元素。 再将40放在下标为1的位置上。
二维数组
数组中嵌套数据
var arr = [[1,2],[3,4]] //注意 1,2,3,4并不是arr的元素 arr的元素为[1,2] [3,4]
冒泡排序
var arr = [8,6,4,1,5,2,9]
//定义比较的轮次
for (var i = 0; i < arr.length - 1; i++) {
//每一轮让所有元素逐一比较。
for (var j = 0; j < arr.length - 1 - i; j++) {
//相邻元素进行比较,如果左边的大,则交换两个值的位置。
if (arr[j] > arr[j + 1]) {
var tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
}
}