是一个内置对象:js已经创建好的对象,有属性和方法。存储一系列有序数据的集合,单个数据叫元素
复杂数据类型>>>对象类型,引用类型
数组数据类型
- 创建 访问方式
构造函数方式:
var arr = new Array() //创建一个空数组
var arr = new Array(1,2,3,4) //数组存储1,2,3,4
var arr = new Array(10) //表示创建一个空数组存储10个元素
字面量方式:
var arr = [] //创建一个空数组
var arr = [1,2,3,4]
var obj = {} //创建空对象
访问数组:
数组索引号,数组下标,从0开始
arr[0]
数组元素赋值
arr[0] = 10
属性 length:返回数组长度,数组元素个数
- 数组对象常用的方法
arr.push(元素)
添加元素到原数组末尾[返回新长度] arr[arr.length ]=值
arr.unshift(元素)[返回新长度]
原数组的最前面添加一个元素[返回删除值]
arr.pop() arr.length = arr.length - 1
删除原数组末尾元素[返回删除值]
arr.shift()
删除原数组最前面的一个元素[返回新数组]
arr.splice(index,num,新元素) index:索引号 num: 元素个数
删除原数组指定索引号index开始的num个元素,新元素可以省略[返回新数组]
arr.reverse()
反转原数组
arr.sort() --将原数组默认由小到大【根据字典顺序排】
是用来给数组排序的
由大到小排(匿名函数,作为函数的参数)
arr.sort(function (a, b) {return a - b})console.log(arr)
以下有返回值-----------------------------------------
arr1.concat(arr2)
多个数组进行拼接,返回一个新数组
arr.join('')
把数组每个元素一()里的内容拼接起来,返回一个新的字符串
arr.toString
返回去掉[]的字符串
arr.indexOf(元素)
返回元素在数组中的索引号,不在数组中返回-1(可以判断数组是否包含此元素)
arr.includes(元素)
有返回true 没有返回false
- 数组对象遍历方法
都可以遍历
for for in for or
arr.forEach(function(item,index,arr){-执行语句console.log(item)) ----for简化版
item 变量的数组元素 index 元素的索引号 arr 原数组对象(都可以不写)
function 匿名函数
没有返回值
长度是多少就遍历多少
var x=arr.map(function(item,index,arr){-执行语句return })
return {number:item.number,name:item.name,score:item.score - 10,gender:item.gender}返回对象
map:映射,可以将满足条件的元素,返回值是新数组,数组元素就是return返回的内容 ,定义一个引用变量接受 var x=map()
和forEach类似,但map可以操作每一项元素
var x=arr.filter(function(item,index,arr){return 条件 })
返回满足条件的数组元素(一般return只能返回值)返回值是新数组
和map类似,但只能设置条件
var x=arr.find(function(item,index,arr){return 条件 })
返回满足条件的第一个元素,没有返回undefined 返回值是新元素
var x=arr.findindex(function(item,index,arr){return 条件 })
返回符合条件的第一个元素索引号 如果没有符合条件的元素则返回-1
var x=arr.some(function(item,index,arr){return 条件 })
判断数组中是否有满足条件的元素,有一个满足就返回ture,否则false
var x=arr.every(function(item,index,arr){return 条件 })
判断数组中所有元素都满足条件,则返回ture 否则false
var x=arr.reduce(function(s,item,index,arr){return s+item },0)
累加
s的初始值是0 s=s+item
reduce有两个参数:1、function匿名函数 2、函数第一个形参初始值
- 数组的内存结构
栈区域:存储基本数据类型变量,存储引用变量(=右边是一个对象)
堆区域:保存的对象(复杂数据类型
- 伪数组
1、没有数组常用的方法,可以遍历,可以使用length,可以通过索引访问
2、像调用document.getElementsByTagName, document.childNodes之类的,它们返回的NodeList对象都属于伪数组
- 冒泡 选择排序思想