前言
之前学习的数据类型,只能存储一个值(比如:Number/String)。我想在一个变量中存储多个值,应该如何存储?
所谓数组,就是将多个元素(通常是同一类型)按一定顺序排列放到一个集合中,那么这个集合我们就称之为数组。
1.1 数组的创建
// 字面量方式创建数组
var arr1 = []; //空数组
// 创建一个包含3个数值的数组,多个数组项以逗号隔开
var arr2 = [1, 3, 4];
// 创建一个包含2个字符串的数组
var arr3 = ['a', 'c'];
console.log(arr1);
console.log(arr2);
// 构造函数方式创建数组
var a1 = new Array(); //空数组
var a2 = new Array('1',2,'h'); //包含三个元素的数组
console.log(a1);
console.log(a2);
// 可以通过数组的length属性获取数组的长度
console.log(arr3.length);
// 可以设置length属性改变数组中元素的个数
arr3.length = 0;
console.log(arr3[0]);//undefined
思考:二维数组什么样?
特别注意:JS中不像PHP,没有关联数组.
1.2 获取数组元素
// 格式:数组名[下标] 下标又称索引
// 下标从0开始
// 功能:获取数组对应下标的那个值,如果下标不存在,则返回undefined。
var arr = ['red',, 'green', 'blue'];
arr[0]; // red
arr[2]; // blue
arr[3]; // 这个数组的最大下标为2,因此返回undefined
1.3 遍历数组
遍历:遍及所有,对数组的每一个元素都访问一次就叫遍历。
for循环数组遍历的基本语法:
for(var i = 0; i < arr.length; i++) {
// 数组遍历的固定结构
}
for循环示例:
var arr1 = [1, 3, 4];
for(var i = 0;i<arr1.length;i++){
console.log(arr1[i]);
}
whil循环示例:
var arr1 = [1, 3, 4];
var i = 0;
while(i<arr1.length){
console.log(arr1[i]);
i++;
}
1.4 为数组添加元素
// 格式:数组名[下标/索引] = 值;
// 如果下标有对应的值,会把原来的值覆盖,如果下标不存在,会给数组新增一个元素。
var arr = ["red", "green", "blue"];
// 把red替换成了yellow
arr[0] = "yellow";
// 给数组新增加了一个pink的值
arr[3] = "pink";
1.5 数组操作案例
案例1:求数组中的所有数的和
//求和
var arr = [10, 20, 30, 40, 50];
//定义变量存储和
var sum = 0;
for (var i = 0; i < arr.length; i++) {
sum += arr[i];
}
console.log("和为:" + sum);
案例2:获取数组中的最大值
//最大值
var arr = [10, 20, 30, 40, 50, 60];
//假设这个变量中的值是最大的
var maxNum = arr[0];
//遍历数组
for (var i = 0; i < arr.length; i++) {
//判断
if (maxNum < arr[i]) {
maxNum = arr[i];
}
}
console.log("最大值是:" + maxNum);
案例3: 遍历出数组中所有的偶数
// 遍历出数组中所有的偶数
var arr = [1,2,3,4,5,6,7];
for(var i=0;i<arr.length;i++){
//判断
if(arr[i]%2==0){
console.log(arr[i]);
}
}
案例4:将数组转为字符串并以 | 分割
//把数组中的每个名字后面拼接一个|然后以字符串的方式输出
var names = ["卡卡西", "佐助", "凤姐", "鸣人", "黑山老妖"];
var str = "";//空的字符串,用来存储最后的拼接的结果的字符串
//不停的遍历数组的数据,并且拼接字符串
for (var i = 0; i < names.length - 1; i++) {
str += names[i] + "|";//拼接字符串的方式
}
str += names[names.length - 1];
console.log(str);