pop、push、shift、unshift
reverse、sort
concat、slice、splice
迭代方法 every some filter map foreach
...[]
Array.from
copyWithin
find、findIndex
includes
一、栈、队列方法
可以用数组模拟栈的和队列
数组尾部操作,出pop()
,入push()
数组头部操作,出shift()
,入unshift()
出的操作,返回移除的元素
在原数组上进行
二、排序,反转
reverse()
反转数组
sort()
数组按升序排序,可以接受一个比较函数
在原数组上进行
三、操作方法
1.contat()连接数组
concat()
,接受一个或多个参数(数组或值),添加到原数组的末尾,返回新数组
不影响原数组
2.slice()提取数组中一部分,返回
slice(起始位置, 结束位置)
,返回这个下标范围内的项,不包括结束位置
如果参数值有负数,则用数组长度加上该数来确定响应的位置
不影响原数组
3.splice()删除、插入、替换
splice(起始位置, 删除的项数, ...插入的项)
利用这个函数可以进行删除,插入,替换
- 删除,传两个参数
- 插入,第二个参数传0
- 替换,三个参数都传
在原数组上进行,返回删除的项
四、位置方法
indexOf()
,lastIndexOf()
,返回某个元素在数组中出现的下标,没找到返回-1
一个从前往后 ,一个从后往前找
五、迭代方法
以下方法均不影响原数组(如果数组中是引用类型,则地址不改变)
以下方法都接受两个参数,要在每一项上运行的函数function(item, index, array){}
和 函数的作用域对象(this)
1.every()和some()
他们用于查询数组中的项是否满足某个条件,返回true或false
every()
,传入的函数,每一项都返回true
,则返回true
some()
,传入的函数,其中一项返回true
,就返回true
2.filter()
把传入的函数返回true的项,组成新数组返回
用于查询符合条件的数组项
3.map()
把运行传入函数的返回值,组成新数组返回
4.foreach()
没有返回值,只是运行对数组中的每一项,运行指定的函数。
六、ES6对于数组的拓展
1.拓展运算符…
该运算符可以将一个数组变为参数序列
传参(取代apply)
Math.max(...[1, 2, 3])
合并数组(不用concat())
[...arr1, ...arr2, ...arr3]
[1, 2, 3, ...more]
解构赋值结合
const [first, ...list] = [1, 2, 3, 4, 5]
first // 1
list // [2, 3, 4, 5]
字符串转数组
[..."hello"]
// ["h", "e", "l", "l", "o"]
2.Array.from()
Array.from
将两类对象转为真正的数组:类似数组的对象,和可遍历(Iterable)对象(Set, Map)
实际应用,常见的类数组对象,如转换NodeList集合(querySelectorAll返回
),转换Set, Map
3.copyWithin()
copyWithin()
将指定位置的成员赋值到其他位置,覆盖原始成员,影响原数组
Array.prototype.copyWithin(替换数据的起始位置, [从此开始读取], [到这读取结束 = length])
[1, 2, 3, 4, 5].copyWithin(0, 3)
// 从0开始替换
// 从3-length读取数据 [4, 5],替换0开始的[1, 2]
// [4, 5, 3, 4, 5]
4.find()和findIndex()
两者都接受一个function(item, index. arr){}
函数第一个返回true对应的项(item或index被返回)
find()
,返回第一个符合条件的成员item
findIndex
,返回第一个符合条件成员的index
5.includes()
includes()
返回一个布尔值,判断数组中是否包含给定的值
ES5中使用 indexOf() !== -1
,不够语义化和直观