数组Array
6.1 什么是数组
- 数组是值得有序集合,每个值叫做一个元素,而每个元素在数组中有一个位置,以数字表示,称为索引。
- js的数组是无类型的,数组元素可以是任意类型,同一个数组中的不同元素可能是对象或数组。
- 简单地说:数组就是用来存放数据的容器。
数组的属性:
属性 描述
constructor 返回对创建此对象的数组函数的引用。
length 设置或返回数组中元素的数目。
prototype 使您有能力向对象添加属性和方法。
6.2 数组的创建
1、通过字面量直接创建
var arr1 = []; //创建一个空数组
var arr2 = [1,2,3]; //创建一个有3个值的数值
var arr3 = [1,true,"hello"]; //创建元素类型不同的数组
var arr1 = []; //创建一个空数组
var arr2 = [1,2,3]; //创建一个有3个值的数值
var arr3 = [1,true,"hello"]; //创建元素类型不同的数组
2、通过构造函数Array创建
//a,调用时没有参数
var a = new Array();
//b,调用时有一个数值参数,它指定长度
var b = new Array(10);
//c,显式指定两个或多个数组元素或者数组的一个非数值元素
var c = new Array(1,2,3);
在js中,数组的元素类型可以是任意的,因此,有时数组中的某个元素值,也可以是一个数组,这样的数组被称为多维数组。
理论上可以嵌套N层,但是最常用的一般是二维数组。
6.3 获取数组元素
通过指定数组名以及索引号码,你可以访问某个特定的元素。
/*
格式: 数组名[下标];
下标又称为索引,从0开始,到数组长度-1。
功能:获取下标对应元素的值,如果下标不存在,则返回undefined。
*/
var arr = [2,3,4];
console.log(arr[0]);
console.log(arr[1]);
console.log(arr[2]);
console.log(arr[3]);
//输出结果为:2,3,4,undefined
6.4 遍历数组
js中常用的遍历数组方法有for,foreach等
1、for循****环
var arr = ["a",1,2];
for(var i=0,len=arr.length;i<len;i++){
console.log(arr[i]);
}
// 输出结果为:a 1 2
2、foreach遍历
forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数。
注意: forEach() 对于空数组是不会执行回调函数的。
基本语法
arr.forEach(function(currvalue,index,arr),thisValue);
- function(currvalue,index,arr):必选。currvalue必需,index可选(当前索引),arr可选(当前元素数组对象)
- thisValue:可选,表示当前对象,this;如果为空,“undefined”会传递this值。
案例演示
var abc = ["范冰冰", "张钧甯", "张馨予", "蒋勤勤", "赵丽颖"];
abc.forEach(function(value, index){
console.log((index+1)+"号美女是:" + value);
})
//输出结果为:1号美女是:范冰冰 2号美女是:张钧甯 3号美女是:张馨予 4号美女是:蒋勤勤 5号美女是:赵丽颖
6.5 数组元素修改和添加
通过数组下标方式,可以修改和添加数组的元素。
由于js中数组的长度是动态的,如果添加的下标不存在,则在数组末尾新增一个元素。
var arr = ["hello","world"];
//可以将world,修改为javascript
arr[1] = "javascript";
//可以在数组最后添加一个新元素。so
arr[2] = "so";
//循环遍历数组,并在控制台中打印
for(var i=0,len=arr.length;i<len;i++){
console.log(arr[i]);
}
//输出结果为:hello javascript so
6.6 数组操作案例
案例1 求数组中的所有数的和
var arr = [22,33,44,5,5,66,77];
var sum=0;
for(var i=0,len=arr.length;i<len;i++){
sum+=arr[i];
}
console.log(sum); //输出结果为:252
案例2 找出下列数组中最大的数
var arr = [22,33,44,5,5,66,77];
//假定最大数为数组的第一个元素
var max=arr[0];
for(var i=1,len=arr.length;i<len;i++){
if(arr[i]>max){
max = arr[i];
}
}
console.log(max); //输出结果为:77
案例3 将数组转为字符串,并以“-”拼接。
var arr = [22,33,44,5,5,66,77];
//假定最大数为数组的第一个元素
var str="";
for(var i=1,len=arr.length;i<len;i++){
str+= arr[i]+"-"
}
//将最后一个-截取掉
str = str.substr(0,str.length-1);
console.log(str);