1、定义
数组中的数据类型没有限制,在实际项目中,数组中通常会存储同一类型的数据。
var arr = ['a',2,false,undefined,{name:"张三"}];
构造函数:var arr = new Array("张三","李四","王五")
有一种情况,这两种定义方式是不一样的:
var arr = [5] var brr = new Array(5) console.log(arr,brr)
运行结果:[ ] 形式定义的是一个数组中有一个小空间,其中的值是5;构造函数方式定义的,表示有5个空的小空间。
2、基本操作
数组中值的个数: 数组.length
访问数组中的元素: 数组[下标]
添加元素: 数组[下标] = 值
修改元素: 数组[下标] = 值
使用说明:如果下标是已经存在的,那赋值操作就是修改数组元素的值,如果下标是不存在,那赋值操作就给数组添
加元素
删除元素: delete 数组[下标]
这种删除方式,只能删除值,并不能删除小空间。
遍历数组: var arr = ["张三","李四","王五","赵六"]; var length = arr.length; for(var i=0;i<length;i++){ console.log(arr[i]); } 遍历对象的 for in 语法也可以遍历数组: var arr = ["张三","李四","王五","赵六"]; for(var i in arr){ console.log(arr[i]); }
for循环 下标是数字
for in循环:下标是字符串
例题:必会!!
3、嵌套
数组中的值类型是没有限制的,所以数组中也可以存储数组。
4、基础类型和引用类型
js中允许出现的数据:number、string、boolean、null、undefined、{}、[]、function
根据不同类型的数据存储方式以及赋值方式的不同,我们将数据分为两类:基本类型和引用类型。
基础数据类型:number、string、boolean、undefined、null
引用数据类型:[]、function, {}
基础类型和引用类型的区别:
1. 存储方式不同
基础类型将值存在栈内存中;引用类型将值存在堆内存中,将堆内存的内存地址存在栈中。
2. 赋值过程不同
基础类型赋值时,将值复制给另一个变量;引用类型赋值时,将栈中的地址复制给别的变量。
复制值以后,修改其中一个,另一个不会受到影响。
3、3. 全等的比较规则不同
基础类型全等比较的时候,比较类型和值;
引用类型全等比较的时候比较栈中存的内存地址是否相同。
5.数组方法:
unshift - 给数组开头添加一个或多个元素 - 返回数组新长度
var arr = ['a','b','c']; var l = arr.unshift('d') console.log(arr) // ['d','a','b','c'] console.log(l) // 4
push - 给数组的末尾添加一个或多个元素
shift - 删除数组的第一个元素 - 返回被删掉的元素
pop - 删除数组最后一个元素 - 返回被删掉的元素
splice - 对数组做增、删、改的操作
var arr = ['a','b','c'] // 改 - 参数1:开始下标;参数2:删除的个数;参数3:在删除的位置放上的新的元素 - 可以是多个 arr.splice(1,1,'d') // ['a','d','c'] // 增 arr.splice(1,0,'d') // ['a','d','b','c'] - 删除0个,就是不删除,然后放上新元素 // 删 - 第三个参数可以省略 arr.splice(1,0) // ['a','c'
concat - 数组的拼接
sort - 数组的排序
var arr = [9,5,3,7,1,6,4,8,2]; arr.sort() // 默认升序 console.log(arr) // [1,2,3,4,5,6,7,8,9] arr.sort(function(a,b){ // a代表前面的数,b代表后面的数 return a-b; // 升序 - 如果前面的数-后面的数>0,则交换位置 return b-a; // 降序 - 如果后面的数-前面的数>0,则交换位置 })
reverse - 数组的反转
join - 将数组中的元素使用指定的连接符连接在一起
slice - 截取数组
var arr = ['a','b','c','d','e','f']; // 将数组中的 'b','c','d'截取出来,组成新的数组 var brr = arr.slice(1,4) // 参数1是开始截取的下标,参数2是截取的结束下标,结果中不包含结束下标对应的 元素 console.log(brr) // ['b','c','d'] // 如果省略第2个参数,默认从开始下标截取到数组末尾 var crr = arr.slice(1) console.log(crr) // ['b','c','d','e','f']