数组
一、数组的定义与概述
1、概述
数组的字面意思就是一组数据,一组(一般情况下相同类型)的数据(不一定都是数字)
数组的作用是:使用单独的变量名来存储一系列的值。
2、数组的定义
-
new Array(参数,参数,...): 只有一个数字参数时是数组的长度(new可以省略,但一般尽量写上)
var arr = new Array(); //定义一个空数组 // 定义长度为10 的数组 var arr = new Array(10); //创建一个包含 10 个元素的数组,没有赋值 var mycars=new Array(3) mycars[0]="Saab" mycars[1]="Volvo" mycars[2]="BMW"
-
创建带值的数组
var arr2 = new Array("芙蓉姐姐”,30); //创建一个数组有两个元素
-
字面量定义方式
vararr3 = [1,2,3,4,5]; //字面量定义方式
-
快捷定义二维数组
vararr3 = [['a','b','c','d'],'b','c','d']; //快捷定义二维数组
console.log(a[0][0])
二、数组的访问
1、数组的下标
下标就是索引,即元素的序号,从0开始,下标最大取值是:数组的长度(length)-1;
下标可以是变量或表达式。
2、使用数组元素(访问)
arr3[0]:表示数组的第一个元素,0是下标,也叫索引
arr[1]:表示数组的第二个元素,1是下标
3、数组的长度(length属性)
-
数组元素的个数
arr.length
-
length属性,不止是只读的,可以设置
var colors = new Array("red", "blue", "green"); colors.length=2; colors[2];
-
注意
- 如果设置的length的长度大于原有长度 则使用empty来占位
- 如果设置的length的长度小于原有长度 则会将小于长度个数的元素删除掉
三、数组的使用与常用方法
1、数组的赋值
- 概述
给数组赋值,就是给数组的元素赋值,需要通过给数组的每个元素一一赋值,
-
实例
arr[0] = 20;//让数组的第一个元素的值为20;
arr[1] =12;//让数组的第二个元素的值为12;
-
以下为通过循环给数组的每个元素赋值,赋成下标的平方。
for(vari=0;i<10;i++){ arr[i] = i*i }
-
以下为通过循环给数组的每个元素赋值,随机数:Math.random()
for(vari=0;i<10;i++){ arr[i] = Math.random(); }
-
2、使用
-
概述
不能一次使用整个数组,使用数组就是在使用数组的每个元素,因为数组相当于若干个相同类型的变量。
-
遍历数组:
-
普通for循环
for(var i=0;i<5;i++){ document.write(arr[i]); }
-
for...in语句用于遍历数组或者对象的属性(快速遍历)
for(var i in arr){ document.write(arr[i]); }
-
-
练习题
1.求数组中所有元素的和; 2.求数组的最大数和最小数(重要) 3求数组的最小数的下标(重要) 4.请将数组[1,46,74,3,5,5]中的元素右移1位。 5.插数:在数组[1,46,74,3,5,5]的下标为2的位置插入一个数字8,结果为[1,46,8,74,3,5,5] 6.在1-50中随机出10个不同的数字
3、常用方法
-
push() 方法可以接收任意数量的参数,把它们逐个添加到数组的末尾,并返回修改后数组的长度。
数组末尾添加一个元素,并且返回长度
alert(box.push('盐城'));
-
pop()方法 则从数组末尾移除最后一个元素,减少数组的 length 值,然后返回移除的元素。
移除数组末尾元素,并返回移除的元素
box.pop()
-
shift() 方法从数组前端移除一个元素,
alert(box.shift()); 移除数组开头元素,并返回移除的元素
-
unshift() 方法从数组前端添加一个或多个元素。
alert(box.unshift(‘广东’,‘深圳')); 数组开头添加两个元素
-
reverse() 逆向排序,原数组也被逆向排序了
var box = [1,2,3,4,5]; alert(box.reverse()); //逆向排序方法,返回排序后的数组 alert(box);
-
sort() //从小到大排序 , 原数组也被升序排序了
var box = [4,1,7,3,9,2]; alert(box.sort()); //从小到大排序,返回排序后的数组 alert(box);
-
concat() : 追加数据, 创建一个新数组, 不改变原数组
var box = [2, 3, 4, '绿箭侠', '黑寡妇']; var box2 = box.concat('美队', '雷神'); alert(box); alert(box2);
-
slice(): 不修改原数组, 将原数组中的指定区域数据提取出来
varbox = [2, 3, 4, "绿巨人"]; varbox2 = box.slice(1, 3); //并没有修改原数组,将原数组中的元素提取出来,生成新数组,取的是下标在区域: [1,3) alert(box); alert(box2);
-
splice(): 截取原数组中指定的数据, 会改变原数组
插入: 如果有3个或以上参数,且第二个参数(长度)为0,则表示插入 box.splice(1, 0, "绿巨人","冬兵"); //在下标为1的位置插入:"绿巨人","冬兵" 替换: 如果有3个或以上的参数, 且第二个参数(长度)不为0, 则表示替换 box.splice(1, 1, "绿巨人","冬兵"); //在下标为1的位置替换成:"绿巨人","冬兵" 删除: 如果只有两个参数, 则表示删除指定区域的数据 box.splice(0, 2); //删除原数组的部分数据, 并返回截取的数据
box.join() 用数组的元素组成字符串
-
冒泡排序
//冒泡排序 var arr = [1,4,2,7,3,5]; for(var i=0;i<arr.length-1;i++){ for(var j=0;j<arr.length-1-i;j++){ if(arr[j]>arr[j+1]){ var max = arr[j]; arr[j] = arr[j+1]; arr[j+1] = max; } } } console.log(arr);