数组
1. 数组的概念
数组是指一组数据的集合,其中的每个数据称作元素,在数组中可以存放任意类型的元素。数组是将一组数据存储在单个变量名下的方式
2. 数组的创建方式
JS中创建数组有两种方式:
- 利用new创建数组
- 利用数组字面量创建数组
利用new关键字创建数组
var 数组名 = new Array();
var arr = new Array();//创建一个新的空数组
Array(),A要大写
利用 数组字面量[] 创建数组(最常用)
//使用数组字面量方式创建空的数组
var 数组名 = [];
使用数组字面量方式创建带初始值的数组
var 数组名 = ['a','b','c','d'];
- 数组中的数据用逗号分隔
- 声明数组并赋值称为数组的初始化
- 字面量方式使用最多的方式
3. 数组元素类型
数组中可以放任意类型的数据,例如字符串、数组、布尔值等
var arr=['小白','hello','12',18.8,true];
4. 获取数组元素
数组的索引
索引(下标):用来访问数组元素的序号(从0开始)
var arr=['小白','hello','12',18.8,true];
// 索引号分别为:0,1,2,3,4
数组可以通过索引来访问(获取、得到)、设置、修改对应的数组元素,我们可以通过数组名[索引号] 的形式来获取数组中的元素
5.遍历数组
怎么把数组全部取出来呢?
通过循环遍历元素的索引号。
遍历:把数组的元素从头到尾访问一次
var arr=['小白','hello','12',18.8,true];
// 索引号分别为:0,1,2,3,4
for(var i=0;i<5;i++){
console.log(arr[i]);
}
for 里的i是计数器,当索引号使用,arr[i]是滴i个数字元素
数组长度
使用数组名.length可以访问数组元素的数量(长度)
var arr=['小白','hello','12',18.8,true];
// 索引号分别为:0,1,2,3,4
for(var i=0;i<5;i++){
console.log(arr[i]);
}
求数组的最大值
var arr=[2,6,1,77,52,25,7];
var max=arr[0];
for(var i=1;i<arr.length;i++){
if(arr[i]>max){
max=arr[i];
}
}
console.log(max);
- 声明一个保存最大元素的变量max,默认最大值取数组中的第一个元素
- 遍历这个数组,把每一个数组元素与max比较
- 数组元素若大于max,就把该元素的值存到max里,否则继续下一轮比较
- 最后输出max
数组转换为字符串
var arr=['red','green','blue','pink'];
var str='';
for(var i=0;i<arr.length;i++){
str+=arr[i];
}
console.log(str);
- 需要一个新变量用于存放转换完的字符串str
- 遍历原来的数组,分别把里面的数据取出来,加到字符串里
6. 数组中新增元素
可以通过修改length长度以及索引号增加数组元素
通过修改length长度新增数组元素
修改length长度来实现数组扩容的目的
length属性是可读写的
var arr=['red','green','blue','pink'];
console.log(arr.length);
arr.length=6;//把数组长度改为了6 里面应该有6个元素
console.log(arr);
console.log(arr[4]); // undefined
console.log(arr[5]); // undefined
通过修改索引号增加数组元素(追加数组元素) 常用
var arr=['red','green','blue','pink'];
arr[4]='yellow';
console.log(arr); // (5) ['red', 'green', 'blue', 'pink', 'yellow']
arr[5]='skyblue';
console.log(arr);// (6) ['red', 'green', 'blue', 'pink', 'yellow', 'skyblue']
arr[0]='hotpink';//这里替换原来的数组元素red
console.log(arr);//(6) ['hotpink', 'green', 'blue', 'pink', 'yellow', 'skyblue']
arr='好好学习';//好好学习
console.log(arr);//不要直接给 数组名赋值 否则里面的数组元素就没有了
- 所以可以通过修改数组索引的方式追加数组元素
- 不可以给数组名赋值,否则会覆盖掉以前的数据
数组新增元素
- 使用循环来追加数组
- 声明一个空数组arr
- 循环中的计数器i可以作为数组元素存入
- 由于数组的索引号是从0开始,因此计数器从0开始更合适,存入的数组元素要加1
//新建一个数组,里面存放10个整数(1-10)
var arr=[];
for(var i=o;i<10;i++){
arr[i]=i+1;
}
console.log(arr);
筛选数组
要求:将数组[2,0,6,1,77,0,52,0,25,7,10]中大于等于10的元素选出来,放入新数组
方法1:
- 声明一个新的数组用于存放新数据newArr。
- 遍历数组,找出大于10的元素
- 追加给新数组newArr
var arr1=[2,0,6,1,77,0,52,0,25,7,10];
var arr2=[];
var j=0;
for(var i=0;i<arr1.length;i++){
if(arr1[i]>=10){
arr2[j]=arr1[i];
j++;
}
}console.log(arr2);
方法2:
var arr1=[2,0,6,1,77,0,52,0,25,7,10];
var arr2=[];//刚开始arr2.length就是0
for(var i=0;i<arr1.length;i++){
if(arr1[i]>=10){
//新增数组的索引号从0开始依次递增
arr2[arr2.length]=arr1[i];
}
}console.log(arr2);
7.数组案例
删除指定数组元素
要求:将数组[2,0,6,1,77,0,52,0,25,7]中的0去掉后,形成一个不含0的新数组
var arr=[2,0,6,1,77,0,52,0,25,7];
var newArr=[];
for(var i=0;i<arr.length;i++){
for(arr[i]==0){
continue;
}
newArr[newArr.length]=arr[i];
}
console.log(newArr);
翻转数组
要求:将数组['red','green','blue','pink']的内容反过来存放
输出:['pink','blue','green','red']
var arr=['red','green','blue','pink'];
var newArr=[];
for(var i=arr.length-1;i>=0;i--){
newArr=[newArr.lenrth]=arr[i];
}
console.log(newArr);
- 声明一个新数组
- 把arr的最后一个元素的索引取出来(arr.length-1)赋给新元素的第0个元素(arr.length)
- 采取递减的方式i--
数组排序(冒泡排序)
冒泡排序是一种简单的排序算法,它重复的访问要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。直到没有需要再交换的。
var arr=[3,4,1,2,7];
for(var i=0;i<arr.length-1;i++){//外层循环管趟数
for(var j=0;j<=arr.length-i-1;j++){//里层循环管每一趟交换的次数
//内部交换两个变量的值,前一个和后一个数组元素相比较
if(arr[j]>arr[j+1]){
var temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
console.log(arr);//[1, 2, 3, 4, 7]