数组的定义
数据类型
基本数据类型 <br /> 数字<br /> 字符串<br /> 布尔值<br /> 特殊数据类型 null undefined
复合数据类型<br /> 数组:存储大量的数据
数组的概念:
字面意思上是一组数据,一组(一般情况下相同数据类型的)数据(不一定都是数字)<br /> 【注】数组是一种数据类型<br /> 【注】数组的作用是:使用单独的变量来存储一系列的值。
数组的创建方式
1.使用new 运算符创建数组<br /> 参数:数我们要在数组中存储的数据<br /> 参数:如果当前的参数只有一个,并且这个参数是数字的话。则该数组是长度为数字的空数组
var arr = new Array(1,true,"hello");
alert (arr);
var arr = new Array(10);
alert(arr);
2.省略new 运算符创建数组
var arr = Array(1,true,"hello");
alert (arr);
3.通过常量来创建数组
【注】1.在数组中存储的数据,一般情况下叫做数组中的元素。
2.数组元素的访问是通过元素的下标完成。下标也叫作索引,从0开始
var arr = [1,true,"hello"];
alert(arr[2]);
数组的长度
arr.length访问 数组元素的个数
【注】length属性,不是只读的,可以设置的
var arr = [1,true,"hello"];
// alert(arr.length);
arr.length = 2;
alert(arr);//输出1,true
数组元素的访问和赋值,都是通过数组的下标来完成
【注】下标就是索引,即元素的序号,从0开始,下标最大的取值是:数组的长度(length)- 1.
【注】下标可以是变量或者表达式
var arr = [10,20,30,40,50];
alert(arr[1+4]);//加的是数组的下标,结果输出50
数组遍历
for循环
以下为通过循环给数组的每个元素赋值,赋成下标的平方。
var arr = [];
for(var i = 0;i <= 10; i++){
arr[i] = i * i ;
}
alert(arr);
以下通过给数组的每个元素赋值,随机数。
/
随机数
Math.random() 可以随机0~1之间任意的数
/
var arr = [];
for(var i = 0;i < 10;i++){
arr[i] = Math.random();
}
alert(arr);
for循环进行遍历
var arr = [1,true,"hello"];
for(var i = 0;i < arr.length;i++){
document.write(arr[i] +"<br/>");
}
for…in进行遍历
快速遍历 将数组中额每一个元素从头到尾进行遍历
【格式】
for (var 变量 in 数组){
}<br /> 【注】for...in效率比for循环的效率高
var arr = [1,true,"hello"];
for(var i in arr){
//i 表示每一次遍历的下标
document.write(arr[i] + "<br>");
}
栈方法与队列方法
栈方法
栈 是古代一种木盆
栈结构:从一个口进,从同一个口出。
【特点】先进后出
push()
【格式】数组.push(元素…)
功能:给数组末尾添加元素
参数:我们要添加的元素,参数个数随意
返回值:添加元素以后,数组的长度
var arr = ["绿巨人","蝙蝠侠","美国队长"];
var res = arr.push("钢铁侠","蜘蛛侠");
alert(arr);
alert(res);//输出数组的长度为5
pop()
【格式】数组.pop();
功能:移除数组末尾的最后一个元素
返回值:移除的元素
var arr = ["绿巨人","蝙蝠侠","美国队长"];
var res = arr.pop();
alert(arr);
alert(res);
通过push()方法在数组尾部插入数据=>通过pop()方法移除数组末尾的最后一个元素==>达到栈方法(先进后出)
**
队列方法
队列
队列结构:从一头进,从另一头出(参考火车过隧道)
特点:先进先出
push()
【格式】数组.push(元素…)
功能:给数组末尾添加元素
参数:我们要添加的元素,参数个数随意
返回值:添加元素以后,数组的长度
var arr = ["绿巨人","蝙蝠侠","美国队长"];
var res = arr.push("钢铁侠","蜘蛛侠");
alert(arr);
alert(res);
shift()
【格式】数组.shift()
功能:从数组的头部取下一个元素
返回值:取下的元素
var arr = ["绿巨人","蝙蝠侠","美国队长"];
var res = arr.shift();
alert(res);
alert(arr);
unshift()
【格式】数组.unshift(参数…)
功能:从数组头部插入元素
参数:我们插入数组的元素,参数的个数随意
返回值:插入参数以后,数组的长度
var arr = ["绿巨人","蝙蝠侠","美国队长"];
var res = arr.unshift("钢铁侠","黑寡妇","蜘蛛侠");
alert(res);
alert(arr);
通过push()方法在数组尾部插入数据=>通过shift()方法在数组头部取下数据==>完成队列结构()先进先出
**
数组的方法
concat()
【格式】数组1.concat(数组2);
功能:将两个数组,合并成一个新的数组,原数组不会改变
返回值:我们合并好的新数组
参数:我们需要合并的数组
var arr1 = ["黑寡妇","惊奇队长","绯红女巫"];
var arr2 = ["钢铁侠","绿巨人","奇异博士"];
var arr = arr1.concat(arr2);
alert(arr);
slice()
【格式】数组. slice(start,end);
功能:基于当前数组获取指定区域元素并创建一个新数组,原数组不变。
参数:start开始获取区域的下标,end结束获取区域的下标,不包括end下标位置的元素
返回值:指定区域元素生成的新数组。
var arr = ["黑寡妇","惊奇队长","绯红女巫","钢铁侠","绿巨人","奇异博士"];
var newArr = arr.slice(0,3);
alert(arr);
alert(newArr);
splice()
可以完成删除,插入,替换操作
【格式】数组.splice(start,length,元素…)
参数:参数1 开始截取的下标
参数2 截取的长度
参数3 在截取的开始的下标位置,我们要插入的元素,插入的元素的个数随意。
【注】会对元素组进行修改
返回值:截取掉的元素,组成的数组
var arr = ["黑寡妇","惊奇队长","绯红女巫","钢铁侠","绿巨人","奇异博士"];
var res = arr.splice(3,3);
alert(res);
alert(arr);
插入功能
var arr = ["黑寡妇","惊奇队长","绯红女巫"];
var res = arr.splice(1,0,"钢铁侠");
alert(arr);
alert(res);
替换功能
先删除 然后再插入
返回值 被替换的元素
var arr = ["黑寡妇","惊奇队长","绯红女巫"];
var res = arr.splice(1,2,"钢铁侠","蜘蛛侠");
alert(arr);
alert(res);
join()
【格式】数组.join()
功能:使用拼接符将数组中元素拼接成字符串。
参数:拼接符
返回值:拼接好的字符串
var arr = [10,20,30];
var str = arr.join("+");
alert(str);
冒泡排序
【原理】前后两个数进行比较,如果符合交换条件,交换位置。知道所有数据排序完成,结束比较。
【注】下面的排序算法叫做冒泡排序
var arr = [9,8,7,5,6,3,4];
for(var i = 0;i < arr.length;i++){//比较的轮次
//每一轮比较的次数
for(var j = 0;j < arr.length - 1;j++){
//判断前后两个数是否符合交换条件
if(arr[j] > arr[j+1]){
var tmp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = tmp;
}
}
}
alert(arr);
二维数组
【注】所谓的二维数组,在数组中还为数组
var arr = [[], [], [], [], []];
通过循环顺序为一个5*5的二维数组a赋1到25的自然数,然后输出该数组的坐下半三角。试编程
1, 2, 3, 4, 5<br /> 6, 7, 8, 9, 10<br /> 11, 12, 13, 14, 15<br /> 16, 17, 18, 19, 20<br /> 21, 22, 23, 24, 25
var count = 0;//从1到25累加中间变量
var arr = [];
for(var i = 0; i< 5; i++){//生成5个数组,存储在arr中
var newArr = [];
//每一个newArr都有5个数
for(var j = 0; j < 5; j++){
newArr.push(++count);
}
arr.push(newArr);
}
// alert(arr);
for(var i = 0; i < arr.length; i++){
//每一行中打印的元素,和当前行数相等。
for(var j = 0; j <= i; j++){
document.write(arr[i][j] + "  ");
}
document.write("<br/>");
}