数组定义及使用

一、什么是数组

        1.数组:是一种数据结构。存放的是一系列变量的集合。在内存中表现为一串连续的内存单元

        2.定义数组

        (1)使用字面量'[]'来定义

           注意:索引(下标)从0开始,到数组的长度减1

            每个数组都有一个默认的属性length,代表数组的长度(数组的单元个数)

        (2)使用Array的构造方法:Array是数组类

        3.数组元素的访问:数组名[下标]

            下标:即索引

             练习:练习输出一个数组(要求使用for循环,将数组元素在一行显示)

          4.数组的遍历:不重复的访问数组元素

             (1)普通的for循环

           (2)for...in

                  for(let 变量名 in数组名和对象名){...}

let arr = [10,20,30]
for(let i in arr){...} //i表示数组的索引

             (3)  for...of循环

                for(let 变量名 of 数组名){...}

let arr = [10,20,30]
for(let val in arr){...}

            (4)forEach循环

           数组名.forEach(function(value,index){...})

比较for、for...in、for...of、forEach循环,说说他们的区别

1.for循环、for...in循环和for...of循环能中断循环(使用break,continue);forEach不可以

2.for循环、forEach循环和for...of循环不能直接遍历对象,for...in可以

3.for...in遍历的是数组的索引,for...of遍历数组元素值

4.for...of不能循环普通的对象,需要通过和Object.keys()搭配使用

5.forEach与for当循环遍历为空的数组时,forEach会跳过为空的值,for不会跳过为空的数据,会直接显示underfiend.两者都能识别出NULL

练习:定义一个具有10个单元的数组,数组元素有Math对象随机生成(10-50之间)。输出数组的最大值和最小值

(5)使用map函数遍历:返回一个新的数组,不会影响原数组

二、数组元素的排序 

1.排序:使用数组元素有序(升序)

2.排序的步骤:比较、交换

3.排序算法

        (1)冒泡排序:数据两两比较,若存在大小关系则进行交换

        需要通过循环嵌套来实现(两层循环)

        外层循环:控制排序的趟数

        内层循环:进行数据的比较

let arr = [89,15,76,99,18,35];
 console.log(  "排序前数组"+arr);
for(let i = 0; i < arr.length; i++){
    for(let j = i + 1; j < arr.length; j++){
        if(arr[i]<arr[j]){
            let temp = arr[i]
                arr[i] = arr[j]
                arr[j] = temp
            }
        }

    }
 console.log(  "排序后数组"+arr);
    

        (2)选择排序法:每次从当前无序列表中找出最小数并记录其下标,然后让最小数与当前无序列表的第一个数进行交换,如此循环知道数组有序

let arr = [89,106,59,26,46,94,15];
 console.log("排序后数组"+arr); 
for (let i = 0; i < arr.length-1; i++) {
                let min = arr[i];
                let k = i;
                for (let j = i+1; j < arr.length; j++) {
                    if (min >= arr[j]) {
                        min = arr[j];
                        k = j;
                    }
                }
                if (k != i) {
                    let temp = arr[i];
                    arr[i] = arr[k];
                    arr[k] = temp;
                }
            }
            console.log("排序后数组"+arr);

三、数组常用的函数

1.join():将数组元素转换成字符串

2.push():在数组的末尾添加一个或多个元素

3.pop():在数组的末尾删除一个元素,函数返回被删除的元素

4.shift():在数组的首部删除一个元素,函数返回被删除的元素

5.unshift():在数组的首部插入一个或者多个元素

6.slice():切片函数。会接受一个或两个参数,从数组中截取部分函数。返回值是数组

(1)slice(索引):截取数组中从给定所以到末尾的所有元素

(2)slice(索引1,索引2):截取数组中索引1到索引2之间的所有元素(包含所有1,不包含索引2)

索引:可以为负数,若是负数表示从后向前找元素

7、fill()函数:用给定的值填充数组

8、filter()函数:对数组元素进行过滤,参数是一个函数,返回值是一个数组

四、二维数组

1.一维数组:通过一个下标就可以访问数组元素

2.二维数组:通过两个下标来确定一个数组元素

3.定义方式:

(1)通过数组字面量'[]'定义:

let arr = [[1,2,3],[4,5,6],[7,8,9]] //定义一个3行3列的二维数组

4.二维数组元素的访问

(1)按行优先---默认方式

数组名[行下标][列下标]

(2)按列优先

数组名[列下标][行下标]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值