数组是什么
- array的英文意思是有序的排列,以形成秩序。
- 在编程语言,数组是一种数据类型。这种数据类型把同类型的数据存储在内存中的一块连续地址上。
- 在JS中,数组同样也是一种数据结构。数组是存储在连续存储中的值的有序集合。与其他编程语言不同的是,JS数组可以存储不同类型的数据。(一次存储多个值的有序集合)
[1,2,3]
['苹果','香蕉','西瓜','草莓']
['张三' , 18 , '卖西瓜' , '爱游泳' ]
数组元素
- 元素使用方括号包裹
- 多个元素之间用英文逗号分隔
数组索引
- 数组中的每一个元素都对应一个唯一有序数字,这个数字表示数组元素的位置,
数组的分类
空数组
- 不包含如何元素的数组
密集数组
- 数组元素和数组索引一 一对应。
- 特点:密集数组的length属性可以准确的反映对应的数组元素
[1,2,3,4,5]
稀疏数组
- 数组元素的分布和数组的索引不是一一对应。
- 特点:数组的length属性不能准确的反映对应的数组元素
[,1, , ,2, 3 , ]//length:6 元素只有3
一维数组
- 存储的都是初始值(没有数组,对象)
[1,2,3,4,5,6]
['苹果','香蕉','西瓜','草莓']
二维数组
- 存储的是元素列表。
['张三' , 18 , false , ['卖西瓜' , '爱游泳' ] ]
多维数组
- 存储的是元素列表的列表....
['张三' , 18 , false , ['卖西瓜' , '收草莓' ], ['爱玩游戏' , '爱游泳' ] ]
创建数组的方法
1.字面量法
[元素1,元素2,元素3]
[1,2,3,4,5,6,7]
2.构造函数法
- 使用Array()构造函数创建数组
new Array(参数)
const arr1 = new Array()
console.log(arr1);
const arr2 = new Array(3)
console.log(arr2);// 数组里没有元素,长度为3 ,稀疏数组
console.log(arr2.length);//3
const arr3 = new Array('苹果','香蕉')
console.log(arr3); // ['苹果', '香蕉']
const arr4 = new Array(1,2,3,4)
console.log(arr4); //[1, 2, 3, 4]
3.扩展符( ... )创建数组
4.内置方法创建数组
- String.split()
- Array.from(伪数组)
- Array.map()
- Array.filter()
操作数组
查询数组长度
- array.lengrth
用法1:查询元素最后一个元素
- array.lengrth - 1
用法2:在数组最后添加元素
- arr[arr.length] = 'a'
用法3:删除数组
let arr = [1,2,3]
console.log(arr.length = 1) // [ 1 ]
访问数组元素
索引法
语法: 数组名[ 索引 ]
修改数组元素
索引赋值法
语法: 数组名[ 索引 ] = 新值
添加数组元素
方法1:使用索引添加
数组名[数组长度] = 新值
方法2 :使用数组方法添加
- array.push()
- array.unshift()
- array.splice() 通用方法:可删、加、改数组元素
- array.concat():合并数组
删除数组元素
方法1:使用数组方法删除
- array.pop()
- array.shift()
- array.splice()
方法2:delete操作符删除
delete 数组名[索引] //只删除元素,不删除索引位置。
let arr = [1,2,3,4,5]
delete arr[2]
console.log(arr);//[1, 2, 空, 4, 5]
遍历数组元素
- for循环
- for of 循环
- for in循环
- 数组迭代器法 forEach()
数组的特点
- 数组是有索引的
- 数组是有长度的
- 比较数组是数组的地址比较
- 复制数组是复制数组的地址
如何访问数组
如何遍历数组
array.length
Array.isArray()
定义
Array.isArray()
方法用于检查是否是数字。
语法
Array.isArray(value)
- value :要检测的值
返回值
- true:如果是数组,返回true
- false:如果不是数组,返回false
示例
var str = 'hello wolrd'
var str1 = [1,2,3]
console.log(Array.isArray(str)) //true
console.log(Array.isArray(str1)) //false
array.push()
定义
array.push()
在数组末尾添加元素
语法
array.push(item1, item2, ..., itemX)
- item1:要添加的元素
- item2:一次可以添加多个元素,多个元素之间用逗号分隔。
返回值
- 返回数组的新长度。
示例
var arr = [1,2,3]
arr.push(4) // 返回值为4
arr.push(5,6,7)// 返回值为7
console.log(var) //[1,2,3,4,5,6,7]
array.unshift()
定义
array.unshift()
将元素添加到数组的开头。
语法
array.unshift(item1, item2, ..., itemX)
- item1:要添加的元素
- item2:一次可以添加多个元素,多个元素之间用逗号分隔。
返回值
- 返回数组的新长度。
示例
var arr =[1,2,3]
arr.unshift(1) //4
console.log(arr)//[1,1,2,3]
array.pop()
定义
array.pop()
删除数组的最后一个元素。
语法
array.pop()
- 无参数
返回值 - 返回删除元素
示例
var arr=[1,2,3]
var arr2=arr.pop()
console.log(arr2) // 返回值3
array.shift()
定义
array.shift()
删除数组的第一个元素。
语法
array.shift()
-无参数
返回值
- 返回删除元素
示例
var arr=[1,2,3]
var arr2=arr.shift()
console.log(arr2) // 返回值1
array.reverse()
定义
array.reverse
反转数组中元素的顺序
语法
array.reverse()
-无参数
返回值
- 返回反转后的数组。
示例
var arr = [1,2,3]
arr.reverse()
console.log(arr)//[3,2,1]
array.join()
定义
array.join
将数组作为字符串返回
语法
array.join(separator)
- separator:可选。要使用的分隔符。如果省略,元素用逗号分隔。
返回值
- 返回字符串值,表示数组值,由指定的分隔符分隔。
示例
var arr = [1,2,3]
console.log(arr.join('')) //123
array.splice()
定义:用于修改数组(删,加,替换)
语法
splice(参数1,参数2,参数3)
splice(起始位置,删除元素的数量,新增元素)
splice(start)
splice(start, deleteCount)
splice(start, deleteCount, item1)
splice(start, deleteCount, item1, item2, itemN)
- start:起始位置
- deleteCount:整数,表示要移除的数组元素的个数。(可选)
- item1:新增元素(可选)
返回值
- 数组包含删除的元素
- 空数组,没有删除任何元素
示例
填一个参数,它就把后面的全删除了
let arr1 = ['苹果','香蕉','西瓜','草莓']
let arr2 = arr1.splice(1)
console.log(arr1);//['苹果']
console.log(arr2);// ['香蕉','西瓜','草莓']
填二个参数,删除位置后面的几个
let arr1 = ['苹果','香蕉','西瓜','草莓']
let arr2 = arr1.splice(1,2)
console.log(arr1);//['苹果','草莓']
console.log(arr2);// ['香蕉','西瓜']
填三个参数,添加在哪个位置
let arr1 = ['苹果','香蕉','西瓜','草莓']
let arr2 = arr1.splice(2,0,'榴莲')
console.log(arr1);//['苹果','香蕉','榴莲','西瓜','草莓']
console.log(arr2);//[ ]