数组构造器
数组的方法:
不改变原数组:
concat(): 拼接数组,合并数组
slice():slice(开始位置索引,结束位置索引):向数组中提取指定元素,包含开始,不包含结束
map():做计算
会改变原数组:
pop(): 删除数组最后一个元素,返回删除的元素值
push(): 向数组末尾添加多个元素,并返回一个值(数组新长度)
shift():与pop相反,删除数组第一个元素,返回删除的元素值
unshift():与push相反,向数组开头添加多个新元素,并返回一个值(数组新长度)
splice():splice(开始位置索引,删除的数量,传递新元素) : 添加元素,删除指定元素
reverse() :倒序数组,会影响原数组
join():数组转为字符串,返回字符串
遍历方法:
forEach():循环
every(): 每个元素都满足测试函数 返回true
some(): 数组中至少有一个满足测试函数,返回true
indexOf():
findIndex():找到第一个满足测试函数的元素,返回具体索引
find():找到第一个满足测试函数的元素,返回值
filter():在所有过滤函数中返回true的数组元素放进一个新数组,返回数组
includes():包括,返回布尔值
reduce():数组求和
sort():重新排序,会影响原数组,按Unicode排序
进阶的方法:
flat():多维数组转一维数组
flatMap() :
Array.from():将类数组转为数组,
Array.of() /fill() :将一组值转为数组
数组实例的 copyWithin()
数组去重
https://juejin.im/post/6844903881500016647
ES6:
new set数组去重:(array.from 或者 扩展运算符)
Array.from(new Set(arr))
[...new Set(arr)]
map数组去重
reduce去重
filter + indexOf去重:filter(x,index,self)
ES5:
双重for循环+splice去重
indexOf去重
includes去重
数组排序
Array.prototype.sort() 的排序稳定性
reverse() 倒序,sort()升序
数组遍历:
for循环:for、forEach 、for...in、for...of(ES6) 迭代器Iterator
map、forEach、reduce求和、filter过滤、【every、some区别】
ES6: entries(),keys() 和 values()
数组求和,求平均数
for循环:for/for循环优化、forEach、for...in、for...of
ES5:while、do...while、递归
ES6:every、some、reduce、filter、map、eval(性能差)https://www.cnblogs.com/faithZZZ/p/7063952.html
for循环优化版,最优:
reduce
for...of循环
尾递归
数组求最大最小值,并集,交集,差集
数组乱序
多维数组转一维数组,手写实现flat
arr.toString().split(',') :只适用于数组内全部是数字
arr.join().split(',')
二维转一维: [].concat(...arr)
手写实现flat:
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。