博客园 首页 新随笔 联系 订阅 管理

1、概念:一般情况下数据类型相同的数据(不一定是数字,可以是任意数据类型)

作用:使用单独的变量名来存储一系列的值

 

2、数组的声明:

(1)通过new运算符创建数组

var arr = new Array(10,20,true,”hello”);

(2)省略new运算符创建数组

var arr = Array(10,20,true,”hello”);

(3)直接通过常量赋值创建数组

var arr = [10,20,true,”hello”];

3、数组的访问

在数组中存储的数据叫做数组的元素

arr[0]:表示数组的第一个元素,0是下标,也叫索引

 

4、数组中的几个名字

数组的长度(length属性)

数组元素的个数 arr.length

数组的下标

下标就是索引,即元素的序号,从0开始,最大值是length – 1

 

5、数组的赋值

(1)通过数组名和下标赋值

(2)通过循环赋值

 

6、数组的使用

遍历数组

普通for循环

for(var i = 0; I < 5;i++){

document.write(arr[i]);

}

 

for…in遍历数组或对象的属性

for(var i in arr){

document.write(arr[i]);

}

 

7、数组的方法

(1)栈方法

:先进后出

push()

格式:数组.push(参数1,参数2…);

功能:给数组的末尾添加元素

返回值:插完元素后数组的长度

pop():

格式:数组.pop()

参数:没有参数

功能:从数组末尾取下一个元素

返回值:取下的元素

(2)队列方法

队列:先进先出

push():向数组末端添加一个元素

shift():

格式:数组.shift()

参数:没有参数

功能:从数组的头部取下一个元素

返回值:取下的元素

unshift():

格式:数组.unshift(参数1,参数2,参数3….)

功能:向数组的头部插入元素

返回值:插入元素后数组的长度

 

(3)数组函数

concat():

1.拷贝原数组,生成新数组

            2.合并数组

                格式:数组.concat(数据1,数据2...)

                返回值:合并的新数组

                :就算传入值是数组,数组中的元素要单独拆出来再进行合并

slice():

格式:

数组.slice(start,end);[start,end)

                       功能:

基于当前数组获得指定区域的元素,[start,end)区域提取元素组成新数组

            返回值:

新生成的数组,原数组不会改变

 

 

splice():

格式:

                数组.splice(start,length,数据1,数据2...)

            参数:

                start 开始截取的位置

                length 截取的元素的长度

                第三个参数开始 在start位置,插入的元素

            返回值:

                截取下来的元素组成数组

 

 

join():

格式:数组.join(字符串)

功能:将数组中的元素,用传入的拼接符,拼接成一个字符串

返回值:拼接好的字符串

reverse():

逆向排序

sort():

格式:数组.sort() 默认从小到大排序,按字符串排序

        参数:一个函数,代表如何进行排序

 

数值排序:

arr.sort(function(value1,value2){

            return value1 - value2;

        })// 从小到大

 

arr.sort(function(value1,value2){

            return value2 – value1;

        })// 从大到小

 

slice():基于当前数组获取指定区域元素[start,end)

splice():由于参数的特殊性,可以完成增、删、改三个功能

 

 

8、冒泡排序

冒泡排序

            规则:前后两个数,两两进行比较,如果符合交换提交就交换两个数的位置

            规律:冒泡排序的每一轮排序,都可以找出一个较大的数,放到正确的位置

 

            9, 8, 7, 6, 5, 4

 

            第一轮:(比较了5次)

                9, 8, 7, 6, 5, 4        9 > 8

                8, 9, 7, 6, 5, 4

                8, 7, 9, 6, 5, 4

                8, 7, 6, 9, 5, 4

                8, 7, 6, 5, 9, 4

                8, 7, 6, 5, 4, 9

            找到了第一大的数:9

 

            第二轮:(比较了4次)

                8, 7, 6, 5, 4

                7, 8, 6, 5, 4

                7, 6, 8, 5, 4

                7, 6, 5, 8, 4

                7, 6, 5, 4, 8

            找到了第二大的数:8

 

            第三轮:(比较了3次)

                7, 6, 5, 4

                6, 7, 5, 4

                6, 5, 7, 4

                6, 5, 4, 7

            找到了第三大的数:7

 

            第四轮:(比较了2次)

                6, 5, 4

                5, 6, 4

                5, 4, 6

            找到了第四大的数:6

 

            第五轮:(比较了1次)

                5, 4

                4, 5

            找到了第五大的数:5

 

            数组长度 = 6

            比较的轮数 = 数组的长度 - 1

 

            第1轮, 比较5

            第2轮, 比较4

            第3轮, 比较3

            第4轮, 比较2

            第5轮, 比较1

            每一轮比较的次数 = 数组长度 - 当前轮数

 

 

9、选择排序

选择排序(打擂台法)

            规则:选出一个位置,这个位置上的数,和后面所有的数进行比较,如果比较楚大小就交换两个数的位置

            规律:每一轮都能选出一个最小的数,放到正确的位置

 

            9, 8, 7, 6, 5, 4

 

            第一轮:比较5

            9, 8, 7, 6, 5, 4 选择第一个位置,后面所有的数都与第一个位置的数比较大小,这里选择9

            8, 9, 7, 6, 5, 4

            7, 9, 8, 6, 5, 4

            6, 9, 8, 7, 5, 4

            5, 9, 8, 7, 6, 4

            4, 9, 8, 7, 6, 5

            第一轮结束,找到最小的数字为4

 

            第二轮:比较4

                9, 8, 7, 6, 5   选择一个位置进行比较

                8, 9, 7, 6, 5

                7, 9, 8, 6, 5

                6, 9, 8, 7, 5

                5, 9, 8, 7, 6

                第二轮结束,找到第二小的数字为5

            

            第三轮:比较3

                    9, 8, 7, 6

                    8, 9, 7, 6

                    7, 9, 8, 6

                    6, 9, 8, 7

                    第三轮结束,找到第三小的数字为6

            

            第四轮:比较2

                        9, 8, 7

                        8, 9, 7

                        7, 8, 9

                        第四轮结束,找到第四小的数字为7

            第五轮:比较1

                            8, 9

                            结束

 

        数组的长度 = 6

        比较的轮数 = 5

        

        比较的轮数 = 数组的长度 - 1

 

        第1轮比较了5

        第2轮比较了4

        第3轮比较了3

        第4轮比较了2

        第5轮比较了1

 

        每一轮比较的次数 = 数组的长度 - 当前的轮数

 

 

//用的擂台的下标,6个数,需要5个擂台

        for(var i = 0; i < arr.length - 1; i++){

            //被比较的数

            for(var j = (i + 1); j < arr.length; j++){

                if (arr[j] < arr[i]) {

                    var temp = arr[j];

                    arr[j] = arr[i];

                    arr[i] = temp;

                }

            }

        }

 

 

补充:

 

1.内存分配,一次分配

 

预编译:在所有代码运行之前,将代码从头到尾看一遍。将这个程序需要运行的空间一次性分配好。

            

            函数也会声明提升

 

            声明提升:在当前作用域,声明变量和函数,会直接提升到整个代码的最前面运行。

 

 

2. 省略var,直接去强制给一个变量赋值,这个变量会被JS强制声明为全局变量。

 

 

3.二维数组

数组存储数据,数组中的每一个元素,可以是任意数据类型 

        数组中的元素可以是数组

二维数组:人为起的

posted on 2021-12-31 20:19  Computer_Science  阅读(54)  评论(0编辑  收藏  举报