数组的定义

数据类型

  1. 基本数据类型 <br /> 数字<br /> 字符串<br /> 布尔值<br /> 特殊数据类型 null undefined
  2. 复合数据类型<br /> 数组:存储大量的数据

数组的概念:

  1. 字面意思上是一组数据,一组(一般情况下相同数据类型的)数据(不一定都是数字)<br /> 【注】数组是一种数据类型<br /> 【注】数组的作用是:使用单独的变量来存储一系列的值。

数组的创建方式

  1. 1.使用new 运算符创建数组<br /> 参数:数我们要在数组中存储的数据<br /> 参数:如果当前的参数只有一个,并且这个参数是数字的话。则该数组是长度为数字的空数组
  1. var arr = new Array(1,true,"hello");
  2. alert (arr);
  3. var arr = new Array(10);
  4. alert(arr);

2.省略new 运算符创建数组

  1. var arr = Array(1,true,"hello");
  2. alert (arr);

3.通过常量来创建数组
【注】1.在数组中存储的数据,一般情况下叫做数组中的元素。
2.数组元素的访问是通过元素的下标完成。下标也叫作索引,从0开始

  1. var arr = [1,true,"hello"];
  2. alert(arr[2]);


数组的长度

arr.length访问 数组元素的个数
【注】length属性,不是只读的,可以设置的

  1. var arr = [1,true,"hello"];
  2. // alert(arr.length);
  3. arr.length = 2;
  4. alert(arr);//输出1,true

数组元素的访问和赋值,都是通过数组的下标来完成
【注】下标就是索引,即元素的序号,从0开始,下标最大的取值是:数组的长度(length)- 1.
【注】下标可以是变量或者表达式

  1. var arr = [10,20,30,40,50];
  2. alert(arr[1+4]);//加的是数组的下标,结果输出50

数组遍历

数组和循环结合使用。js中数组和循环是绝配

for循环

  1. 以下为通过循环给数组的每个元素赋值,赋成下标的平方。
  1. var arr = [];
  2. for(var i = 0;i <= 10; i++){
  3. arr[i] = i * i ;
  4. }
  5. alert(arr);

以下通过给数组的每个元素赋值,随机数。
/
随机数
Math.random() 可以随机0~1之间任意的数
/

  1. var arr = [];
  2. for(var i = 0;i < 10;i++){
  3. arr[i] = Math.random();
  4. }
  5. alert(arr);

for循环进行遍历

  1. var arr = [1,true,"hello"];
  2. for(var i = 0;i < arr.length;i++){
  3. document.write(arr[i] +"<br/>");
  4. }

for…in进行遍历

快速遍历 将数组中额每一个元素从头到尾进行遍历
【格式】
for (var 变量 in 数组){

  1. }<br /> 【注】for...in效率比for循环的效率高
  1. var arr = [1,true,"hello"];
  2. for(var i in arr){
  3. //i 表示每一次遍历的下标
  4. document.write(arr[i] + "<br>");
  5. }

栈方法与队列方法

栈方法

栈 是古代一种木盆
栈结构:从一个口进,从同一个口出。
【特点】先进后出

push()
【格式】数组.push(元素…)
功能:给数组末尾添加元素
参数:我们要添加的元素,参数个数随意
返回值:添加元素以后,数组的长度

  1. var arr = ["绿巨人","蝙蝠侠","美国队长"];
  2. var res = arr.push("钢铁侠","蜘蛛侠");
  3. alert(arr);
  4. alert(res);//输出数组的长度为5

pop()
【格式】数组.pop();
功能:移除数组末尾的最后一个元素
返回值:移除的元素

  1. var arr = ["绿巨人","蝙蝠侠","美国队长"];
  2. var res = arr.pop();
  3. alert(arr);
  4. alert(res);

通过push()方法在数组尾部插入数据=>通过pop()方法移除数组末尾的最后一个元素==>达到栈方法(先进后出)
**

队列方法

队列
队列结构:从一头进,从另一头出(参考火车过隧道)
特点:先进先出

push()
【格式】数组.push(元素…)
功能:给数组末尾添加元素
参数:我们要添加的元素,参数个数随意
返回值:添加元素以后,数组的长度

  1. var arr = ["绿巨人","蝙蝠侠","美国队长"];
  2. var res = arr.push("钢铁侠","蜘蛛侠");
  3. alert(arr);
  4. alert(res);

shift()
【格式】数组.shift()
功能:从数组的头部取下一个元素
返回值:取下的元素

  1. var arr = ["绿巨人","蝙蝠侠","美国队长"];
  2. var res = arr.shift();
  3. alert(res);
  4. alert(arr);

unshift()
【格式】数组.unshift(参数…)
功能:从数组头部插入元素
参数:我们插入数组的元素,参数的个数随意
返回值:插入参数以后,数组的长度

  1. var arr = ["绿巨人","蝙蝠侠","美国队长"];
  2. var res = arr.unshift("钢铁侠","黑寡妇","蜘蛛侠");
  3. alert(res);
  4. alert(arr);

通过push()方法在数组尾部插入数据=>通过shift()方法在数组头部取下数据==>完成队列结构()先进先出
**

数组的方法

concat()

【格式】数组1.concat(数组2);
功能:将两个数组,合并成一个新的数组,原数组不会改变
返回值:我们合并好的新数组
参数:我们需要合并的数组

  1. var arr1 = ["黑寡妇","惊奇队长","绯红女巫"];
  2. var arr2 = ["钢铁侠","绿巨人","奇异博士"];
  3. var arr = arr1.concat(arr2);
  4. alert(arr);

slice()

【格式】数组. slice(start,end);
功能:基于当前数组获取指定区域元素并创建一个新数组,原数组不变。
参数:start开始获取区域的下标,end结束获取区域的下标,不包括end下标位置的元素
返回值:指定区域元素生成的新数组。

  1. var arr = ["黑寡妇","惊奇队长","绯红女巫","钢铁侠","绿巨人","奇异博士"];
  2. var newArr = arr.slice(0,3);
  3. alert(arr);
  4. alert(newArr);

splice()

可以完成删除,插入,替换操作
【格式】数组.splice(start,length,元素…)
参数:参数1 开始截取的下标
参数2 截取的长度
参数3 在截取的开始的下标位置,我们要插入的元素,插入的元素的个数随意。
【注】会对元素组进行修改
返回值:截取掉的元素,组成的数组

  1. var arr = ["黑寡妇","惊奇队长","绯红女巫","钢铁侠","绿巨人","奇异博士"];
  2. var res = arr.splice(3,3);
  3. alert(res);
  4. alert(arr);

插入功能
  1. var arr = ["黑寡妇","惊奇队长","绯红女巫"];
  2. var res = arr.splice(1,0,"钢铁侠");
  3. alert(arr);
  4. alert(res);

替换功能

先删除 然后再插入
返回值 被替换的元素

  1. var arr = ["黑寡妇","惊奇队长","绯红女巫"];
  2. var res = arr.splice(1,2,"钢铁侠","蜘蛛侠");
  3. alert(arr);
  4. alert(res);

join()

【格式】数组.join()
功能:使用拼接符将数组中元素拼接成字符串。
参数:拼接符
返回值:拼接好的字符串

  1. var arr = [10,20,30];
  2. var str = arr.join("+");
  3. alert(str);

冒泡排序

【原理】前后两个数进行比较,如果符合交换条件,交换位置。知道所有数据排序完成,结束比较。
【注】下面的排序算法叫做冒泡排序

  1. var arr = [9,8,7,5,6,3,4];
  2. for(var i = 0;i < arr.length;i++){//比较的轮次
  3. //每一轮比较的次数
  4. for(var j = 0;j < arr.length - 1;j++){
  5. //判断前后两个数是否符合交换条件
  6. if(arr[j] > arr[j+1]){
  7. var tmp = arr[j + 1];
  8. arr[j + 1] = arr[j];
  9. arr[j] = tmp;
  10. }
  11. }
  12. }
  13. alert(arr);

二维数组

【注】所谓的二维数组,在数组中还为数组
var arr = [[], [], [], [], []];
通过循环顺序为一个5*5的二维数组a赋1到25的自然数,然后输出该数组的坐下半三角。试编程

  1. 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
  1. var count = 0;//从1到25累加中间变量
  2. var arr = [];
  3. for(var i = 0; i< 5; i++){//生成5个数组,存储在arr中
  4. var newArr = [];
  5. //每一个newArr都有5个数
  6. for(var j = 0; j < 5; j++){
  7. newArr.push(++count);
  8. }
  9. arr.push(newArr);
  10. }
  11. // alert(arr);
  12. for(var i = 0; i < arr.length; i++){
  13. //每一行中打印的元素,和当前行数相等。
  14. for(var j = 0; j <= i; j++){
  15. document.write(arr[i][j] + "&ensp;&ensp;");
  16. }
  17. document.write("<br/>");
  18. }