整体介绍
数组的定义和基本使用 1)数组简介和定义 2)数组类型的检测 数组的常用方法 1)数组的常用方法1 2)数组的常用方法2 3)数组的常用方法3 数组算法 1)遍历相关算法 2)数组去重和随机样本 3)冒泡排序 4)二维数组 认识引用类型 1)什么是引用类型 2)深克隆和浅克隆
数组简介和定义
数组(Array),顾名思义,用来存储一组相关的值,从而方便进行求和、计算平均数、逐项遍历等操作。
var scoreArr=[96,97,76,87,87,98,91,100,78,56];
每种高级编程语言中都有数组,它是非常重要的一种数据结构
数组定义方法1
定义一个数组非常的简单,只需要使用方括号[]即可
数组定义方法2
数组定义方法3
下面的代码表示定义一个长度为4的数组,但是这4项都是undefined
var arr = new Array(4);
访问数组项
数组每一项都有下标,下标从0开始
可以使用方括号中书写下标的形式,访问数组的任一项
下标越界
JavaScript规定,访问数组中不存在的项会返回undefined,不会报错
数组的长度
数组的length.属性表示它的长度
var arr=['A','B','C','D'];
console.log(arr.length);//4
更改数组项
数组并不是只读的,我们可以修改它其中任何项的值
如果更改的数组项超过了length-1,则会创造这项
chart
数组遍历
中间4个逗号处输出3个undefined
末尾三个逗号输出2个undefined ,最后一个逗号会自动忽略
数组类型的检测
数组用typeof检测结果是object
Array.isArray()方法可以用来检测数组 IE6 7不兼容 在后面课程中,还将介绍使用“鸭式辨型”检测方法
数组的常用方法
数组的常用方法1
数组的头尾操作
数组的头尾操作方法
push()方法
push()方法用来在数组末尾推入新项,参数就是要推入的项 如果要推入多项,可以用逗号隔开 调用push()方法后,数组会立即改变,不需要赋值
arr = arr.push(66); ❌
arr = arr.push(77,88,99);❌
pop()方法
与push()相反,pop()方法用来删除数组中的最后一项 pop()方法不仅会删除数组末项,而且会返回被删除的项
unshift()方法
unshift()方法用来在数组头尾插入新项,参数就是要插入的项 如果要插入多项,可以用逗号隔开 调用unshift()方法后,数组会立即改变,不需要赋值
shift()方法
与unshift()相反,shift()方法用来删除数组中下标为0的项 shft()方法不仅会删除数组首项,而且会返回被删除的项
数组的常用方法2
splice()方法
splice()方法用于替换数组中的指定项
splice()方法可以用于在指定位置插入新项
splice()方法可以用于删除指定项
slice()方法
slice()方法用于得到子数组,类似于字符串的slice()方法 slice(a,b)截取的子数组从下标为a的项开始,到下标为b(但不包括下标为b的项)结束 slice(a,b)方法不会更改原有数组 slice()如果不提供第二个参数,则表示从指定项开始,提取所有后续所有项作为子数组 s1ice()方法的参数允许为负数,表示数组的倒数第几项
数组的常用方法3
join()和split()方法
数组的join()方法可以使数组转为字符串;字符串的split()方法可以使字符串转为数组。
join()的参数表示以什么字符作为连接符,如果留空则默认以逗号分隔,如同调用toString()方法
split()的参数表示以什么字符拆分字符串,一般不能留空
字符串和数组更多相关性
字符串也可以使用方括号内写下标的形式,访问某个字符等价于charAt()方法
concat()方法
concat()方法可以合并连结多个数组 concat()方法不会改变原数组
reverse()方法
reverse()方法用来将一个数组中的全部项顺序置反,会立即改变原来数组
改变字符串顺序: 别弄混数组与字符串的方法
indexOf()和includes()方法
indexof()方法的功能是搜索数组中的元素,并返回它所在的位置,如果元素不存在,则返回-1 includes()方法的功能是判断一个数组是否包含一个指定的值,返回布尔值
注意:这两个方法都是使用”==“判断
什么是引用类型
基本类型和引用类型
◆基本类型:number、boolean、string、undefined、null
◆引用类型:array、object、function、regexp…
基本类型值变量传值的内存变化
引用类型值变量传值的内存变化
相等判断时的区别
◆基本类型进行相等判断时,会比较值是否相等 ◆引用类型进行相等判断时,会比较址是否相等,也就是说它会比较是否为内存中的同一个东西
总结
深克隆和浅克隆
◆使用arr1=arr2的语法不会克隆数组 浅克隆:只克隆数组的第一层,如果是多维数组,或者数组中的项是其他引用类型值,则不克隆其他层
深克隆:克隆数组的所有层,要使用递归技术,在后面课程介绍