一、定义数组
1.对象形式
1 | const array = new Array('a', 'b', 'c'); |
2.字面量形式
1 | const array = [1, 2, 3]; |
3.可以使用console.table查看数组;
二、数组长度
1 | let arr = ['a']; |
三、创建一个数组,只有数字6
1 | let arr1 = new Array(6); |
四、
1.判断是否为数组,返回布尔值
1 | Array.isArray([1, 2]); //true |
2.数组转字符串
1 | console.log([1, 2, 3].toString()); //1,2,3 |
3.字符串转数组
1 | console.log(Array.from('abc')); //['a', 'b', 'c'] |
4.有length属性的,可用Array.from()转成数组
1 | let obj = { |
1 | let obj = {0: 'a', 1: 'b', length: 2}; |
Array.from第二个参数是对数组每个元素使用
1 | <div>aaa</div> |
还可以用原型链方法:Array.prototype.map.call(divs, function () {…})
或者展开语法:[…divs].map((item) => {…})
五、展开语法
1.合并数组
法一、遍历push
1 | let arr1 = ['a', 'b', 'c']; |
法二、展开语法
1 | let arr1 = ['a', 'b', 'c']; |
法三、concat方法,可一次合并多个
1 | let arr = ['wcg', 1998]; |
2.函数使用展开语法, 以一个变量接收多个参数
1 | function sum(...args) { |
六、解构赋值
1.基本使用
1 | let arr = ['wcg', 1998]; |
1 | console.log(...'abcde'); //a b c d e |
2.只取数组中的某个值, 可以用逗号占位
1 | let [, year] = ['wcg', 1998]; |
3.解构与展开语法混用
1 | let [name, ...args] = ['wcg', 1998, 'man']; |
4.默认值
1 | let [name, year = 1998] = ['wcg']; |
5.函数参数接收
1 | function show ([name, year]) { |
七、追加数组元素
1.使用数组索引追加
1 | let arr = ['wcg', 1998]; |
2.展开语法追加多个(略)
3.使用push方法
1 | let arr = ['wcg', 1998]; |
push返回数组长度
1 | let arr = ['wcg', 1998]; |
八、出栈,入栈,填充数组
1.pop弹出数组末尾元素,返回弹出的元素
1 | let arr = ['wcg', 1998]; |
2.unshift从数组前端添加元素,返回数组长度(同样也是可以添加多个)
1 | let arr = ['wcg', 1998]; |
3.shift从数组前端移除元素,返回移除的元素
1 | let arr = ['wcg', 1998]; |
4.填充元素
1 | console.log(Array(5)); //生成长度为5的空数组 |
九、增删改
1.slice截取数组元素,不改变原数组
1 | let arr = [1, 2, 3, 4, 5]; |
2.splice对数组增加,删除,替换,会改变原数组
删除元素
1 | let arr = [1, 2, 3, 4, 5]; |
在数组前端增加元素,支持添加多个
1 | let arr = [1, 2, 3, 4, 5]; |
在数组末尾添加元素,支持多个
1 | let arr = [1, 2, 3, 4, 5]; |
替换元素
1 | let arr = [1, 2, 3, 4, 5]; |
编写函数实现移动数组元素
1 | function move (arr, from, to) { |
十、清空数组
以下方法都可以清空数组
1 | let arr = [1, 2, 3, 4]; |
arr = [] 与 arr.length = 0 是有区别的;使用arr = [] 时,清空后不影响数组之前的引用;使用 arr.length = 0 ,会影响数组之前的引用。
1 | let arr = [1, 2, 3, 4]; |
1 | let arr = [1, 2, 3, 4]; |
十一、数组拆分与合并
字符串与数组相互转化
1 | let str = 'wcg,1998'; |
数组元素复制
1 | let arr = [1, 2, 3, 4]; |
十二、数组元素查找
1.indexOf,lastIndexOf(都是严格查找,值与类型都要匹配上)
indexOf从左侧开始查找元素,第二个参数是查找的起始点,返回数组索引,如果没有,则返回 -1
1 | let arr = [1, 2, 3, 4]; |
1 | let arr = [1, 2, 3, 4, 2]; |
lastIndexOf从右侧开始查找元素,第二个参数是查找的起始点,返回数组索引,如果没有,则返回 -1
1 | let arr = [1, 2, 3, 4, 2]; |
1 | let arr = [1, 2, 3, 4, 2]; |
2.includes
查找指定元素,返回布尔值
1 | let arr = [1, 2, 3, 4, 2]; |
3.includes方法原理实现
1 | let arr = [1, 2, 3, 4]; |
4.find
find适用于引用类型元素查找,找到则返回元素,否则返回undefined
1 | let arr = [ |
5.findIndex
findIndex也适用于引用类型元素查找,找到则返回元素索引,否则返回-1
1 | let arr = [ |
6.find方法原理实现
1 | function find(arr, callback) { |
1 | Array.prototype.findVal = function(callback) { |
十三、数组排序
从小到大
1 | let arr = [1, 5, 9, 2, 6]; |
从大到小
1 | let arr = [1, 5, 9, 2, 6]; |
对象数组升序排列
1 | let cart = [ |
sort方法原理实现
1 | let arr = [1, 5, 9, 2, 6]; |
十四、遍历数组
1.经典for循环
1 | let arr = [1, 5, 9, 2, 6]; |
2.for…of遍历数组元素,取的是值
1 | let arr = [1, 5, 9, 2, 6]; |
如果是引用类型元素的数组,for..of可以影响原数组,否则不会影响。
1 | let arr1 = [1, 5, 9, 2, 6]; |
3.for…in遍历数组,取的是索引
1 | let arr = [1, 5, 9, 2, 6]; |
1 | let arr = [1, 5, 9, 2, 6]; |
4.forEach
1 | let arr = [1, 5, 9, 2, 6]; |
对于元素的修改,与for…of及for…in类似(助记:对于只有基本类型的值数组,通过遍历的元素无法修改元素组,通过索引可以修改)
1 | let arr = [1, 5, 9, 2, 6]; |
5.数组迭代器
1 | let arr = ['wcg', 1998]; |
1 | let arr = ['wcg', 1998]; |
1 | let arr = ['wcg', 1998]; |
1 | let arr = ['wcg', 1998]; |
1 | let arr = ['wcg', 1998]; |
十五、every、some
every方法检查数组每一项是否满足条件,返回布尔值
1 | let arr = ['wcg', '1998']; |
some方法检查至少一个元素满足条件即可,返回布尔值
1 | let arr = ['wcg', '1998']; |
十六、filter
1 | let arr = ['wcg', '1998', 'Vue']; |
filter方法原理实现
1 | function filter(arr, callback) { |
十七、map
1 | let arr = ['wcg', '1998', 'Vue']; |
十八、reduce
统计总数
1 | let arr = [1, 2, 3, 4, 5]; |
统计wcg出现的次数
1 | let arr = [1, 'wcg', 2, 3, 'wcg']; |
获取数组最大值
1 | let arr = [1, 22, 99, 46, 5, 12]; |
值类型数组去重
1 | let arr = [1, 2, 3, 3, 1, 4, 2]; |
对象数组去重可以搭配find使用
十九、案例:鼠标滑动文字动效
1 |
|