一、什么是数组
我们可以从以下几种不同的概念去理解数组。
- 看到"数组",二字,我们从字面意思上理解,就是一组数的组合。这个理解可能不是那么全面和准确,但对于我们去深刻理解有一定的作用。
- 数组是存储一个或多个数据的容器,它是一组内存空间,通常用来批量处理数据。
- 数组是有序排列的同类数据元素的集合
- 数组就是一组定长连续的用来存储数据的结构
- 数组是一种特殊的变量,它能够一次存放一个以上的值
下面是我在电脑上画的草图,有助于理解什么是数组
数组的下标是从零开始的,下标对应的内存块中存储数据。数组里可以存放多种数据类型的数据,不只是数字,还可以存放字符串,布尔值,对象等。
如果有一些品牌的香水需要存储,在单个变量中存储香水品牌应该是这样的:
var fragrance = "GUCCI"; var fragrance = "CHANEL"; var fragrance = "DIOR";
存储三个香水品牌我们会了,但是如果我们要存储3000个香水品牌呢?难道要存储3000次吗?很显然,这是不可能的。所以我们就想到了数组。
数组可以用一个单一的名称存放很多值,并且还可以通过引用索引号来访问这些值。
二、创建数组
我们知道了什么是数组,那我们该怎么创建数组呢?
1、构造函数方式
var arr = new Array();
var arr = new Array("1",1,false);
2、字面量方式(比较常用)
var arr = [1,2,3];
三、访问数组
我们知道了数组中存放的是一组数据,如果我们想要访问某一个数据要怎么做呢?
我们可以通过索引号/下标来访问某个数组元素,下面以一个例子说明。
var arr = [1,3,2,3,4,2];
console.log(arr[0]); //在控制台打印出 1
console.log(arr[1]); //在控制台打印出 3
console.log(arr[2]); //在控制台打印出 2
四、遍历数组
上边的arr数组只有6个数据,我们可以一一访问,但如果数组中有成千上万的数据,我们还能这样访问吗?显然不可能。我们通常采取的做法是遍历数组。遍历数组有很多种方法,我们通过具体代码说明。
<script>
//第一种方法: for循环
var classmates = new Array("张三","李四","王五","赵六");
document.write("第一种方式打印:");
for(var i = 0; i<classmates.length; i++){
document.write(classmates[i]);
}
document.write("<br>");
//第二种方法:for-in 循环
document.write("第二种方式打印:");
for(var i in classmates){
document.write(classmates[i]);
}
document.write("<br>");
//第三种方法:forEach()
document.write("第三种方式打印:");
classmates.forEach(function(a){
document.write(a);
}
)
document.write("<br>");
第四种方法: map映射
document.write("第四种方式打印:");
var a = classmates.map(function(item,i,arr)
{
document.write(item);
}
)
</script>
五、属性和方法
1、length属性
length 属性返回数组的长度(数组元素的数目)。
var arr = [1,3,2,3,4,2];
console.log(arr.length);//控制台打印6
2、pop( )方法 删除数组最后一个元素
var myarr = [10,9,"abc",23,false];
myarr.pop();
console.log(myarr); //控制台打印:10,9,"abc",23
其返回值为删除的元素
3、shift( )方法 删除数组的第一个元素
var myarr = [10,9,"abc",23,false];
myarr.shift();
console.log(myarr); //控制台打印输出: 9,"abc",23,false
其返回值为删除的元素
注意:上边两种删除数组元素的方法中都不带参数
4、push()方法 在尾部添加元素
语法:
arrObj.push(元素1,元素2,....) 在数组尾部添加一个或多个元素
返回值 新数组的长度
var myarr = [10,9,"abc",23,false];
myarr.push("hello"); //在尾部添加
console.log(myarr); //控制台打印 10,9,"abc",23,false,"hello"
返回值为增加后新数组的长度
5、unshift()方法 在头部部添加元素
语法:
arrObj.unshift(元素1,元素2,....); 在数组头部部添加一个或多个元素
返回值 新数组的长度
var myarr = [10,9,"abc",23,false];
myarr.unshift("world"); //在头部添加
console.log(myarr); //控制台打印 "world",10,9,"abc",23,false
返回值为增加后新数组的长度
6、sort( )方法 对数组元素排序
var arr = [12,1,5,7,20,9];
console.log(arr);
console.log(arr.sort());
var arr = [12,1,5,7,20,9];
arr.sort(function(x,y){
// teturn x - y; //升序
return y-x; //降序
});
7、reverse()方法 用于颠倒数组中元素的顺序
var arr = [10,7,3,"hello", 9,true,8];
arr.reverse();
console.log(arr); //控制台打印输出 8,true, 9 ,"hello" ,3 ,7,10
可以看出,数组里的数据顺序颠倒了。
8、 concat()方法 用于连接两个或多个数组
语法:
arrObj.concat(参数)
参数: 待连接的数组或元素,多个数组或元素之间用逗号隔开
返回值:连接后的数组
var arr1 = [10,7,3,"hello", 9,true,8];
var arr2 = ["abc",100];
var arr3 = ["ss"];
console.log(arr1.concat(arr2,arr3,"welcome"));
//控制台打印输出 10, 7, 3, 'hello', 9, true, 8, 'abc', 100, 'ss', 'welcome'
9、join()方法 把数组中所有元素放入一个字符串,元素是通过指定的分隔符进行分隔的
例如下面的例子通过"-"对数组元素进行分割
var arr1 = [10,7,3,"hello", 9,true,8];
console.log(arr1.join("-")); //控制台打印输出10-7-3-hello-9-true-8