JavaScript的数组

206 阅读4分钟

数组

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);
  1. 声明一个保存最大元素的变量max,默认最大值取数组中的第一个元素
  2. 遍历这个数组,把每一个数组元素与max比较
  3. 数组元素若大于max,就把该元素的值存到max里,否则继续下一轮比较
  4. 最后输出max

数组转换为字符串

var arr=['red','green','blue','pink'];
var str='';
for(var i=0;i<arr.length;i++){
    str+=arr[i];
}
console.log(str);
  1. 需要一个新变量用于存放转换完的字符串str
  2. 遍历原来的数组,分别把里面的数据取出来,加到字符串里

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);//不要直接给 数组名赋值 否则里面的数组元素就没有了
  1. 所以可以通过修改数组索引的方式追加数组元素
  2. 不可以给数组名赋值,否则会覆盖掉以前的数据

数组新增元素

  1. 使用循环来追加数组
  2. 声明一个空数组arr
  3. 循环中的计数器i可以作为数组元素存入
  4. 由于数组的索引号是从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:

  1. 声明一个新的数组用于存放新数据newArr。
  2. 遍历数组,找出大于10的元素
  3. 追加给新数组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);
  1. 声明一个新数组
  2. 把arr的最后一个元素的索引取出来(arr.length-1)赋给新元素的第0个元素(arr.length)
  3. 采取递减的方式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]