数组:
当成一个容器,是一个数据结构
为什么要用数组?
1:为了解决大量相关数据的存储和使用的问题。
2:模拟真实的世界(班级、jd)。
创建数组:
1、通过构造函数的方式创建 var a =new Array();
1)、直接赋值
var a = new Array(数据1,数据2,...)
2)、声明以后再赋值
var a = new Array();
//通过下标的方式添加
var a[0] = 1; var a[1] = 2;
2、通过语法糖的方式:(隐式声明的方式)var arr = [ ];
1)、直接赋值:var a = [1,2,3,...];
2)、声明以后再赋值:
var a=[]; a[0]=1; a[1]=2; a[2]=3;
JS数组可以存放任何数据的值
修改数据
arr[1] = '你好!';
删除数组
delete arr[1];
访问数组
console.log(arr[1]);//访问下标为1的数据
//通过遍历的方式查询数组中的所有数据
for(var i = 0;i<arr.length;i++){
console.log(arr[i]);
}
//通过for ... in遍历数组
语法: for(var attr in arr){}
例:
for(var a in arr){
console.log(a);//a每次循环被赋予的值是这个值的下标
console.log(arr[a]);//访问的是数组的每个值
}
//使用for in 遍历对象
var obj = {
name : '张三',
age : 24,
hobby : ['打篮球','乒乓球','听音乐']
}
//console.log(obj.age);
//console.log(obj['age']);
for(var attr in obj){
console.log(attr);//name age hobby
console.log(obj[attr]);//name age hobby '打篮球','乒乓球','听音乐'
}
使用while循环遍历数组:
var arr = ['张三','李四','王五','赵四'];
var i = 0;
while(i<arr.length){
console.log(arr[i]);
i++;
}
根据下标来分类数组:
如果下标都是数字,则称为索引数组
如果下边都是字符转,则称为关联数组
根据维度来分类数组:
看数组的深度,往下嵌套的多少数组
数组的属性和方法:
属性:
1)、指定或者读取数组的长度
console.log(arr.length);//读取数组的长度
arr.length = 6//指定数组的长度为6
2)、constructor(ES6中的一个语法糖)
console.log(arr.constructor);
返回构造函数的引用
方法:
arr[arr.length] = '111';//将111这个添加到数组的末尾,通过属性的方式
arr.push('aaa');//将aaa这个push到数组的末尾,通过方法,会改变原数组,返回值是数组追加完的长度
arr.unshift('a','b');//将a和b添加到数组的开始,会改变原数组,返回值是数组追加完的长度
arr.shift();//删除数组的第一个元素,返回值为被删除的元素
arr.pop();//删除数组的最后一个元素,返回值为被删除的元素
万能的添加数组的方法(可以实现增删改)
arr.splice(index,num,val1,val2,...)//返回值是一个数组
index代表从哪个开始,num表示删除几个,以后的就是要添加的元素
以上五个方法都会影响原数组,shift和pop都会返回被删除的元素