本文已参与「新人创作礼」活动, 一起开启掘金创作之路。
·饭后走一走活到九十九
·饭后晒一晒病痛都不在
·饭后睡一睡永远不怕累
数组的操作方法
读写数组
- 使用中括号访问数组 [index],多维数组也是。
- 通过length属性,获取数组长度
读写操作
-
尾部操作
- push() 将1个或多个参数值加到数组尾部,并返回添加后数组长度
- pop() 删除数组中最后一个元素,并返回被删除元素
-
头部操作
- unshift() 把一个或多个参数值附加到数组头部,并返回添加元素后数组的长度
- shift() 能够删除第一个元素,并返回该元素,然后将余下所有元素前移,如果数组为空,不做任何操作,返回undefined
-
其他操作
-
delete --原数组操作
-
splice() --返回被删除元素数组/空数组
- 第一个参数,设置操作的下标位置
- 第二个参数,设置要删除多少元素及数据类型,不设置,即从开始到末尾全部
- 第三个参数以后,设置要添加到数组的新元素列表
-
concat() --返回新数组
- concat能把传递的所有参数按顺序添加到数组尾部
-
数组排序
-
reverse() --在原数组上操作
- 颠倒数组内的排列顺序,不需要参数
-
sort() --在原数组上操作
-
任何情况下,undefined的元素都被排列在末尾
-
传入排序函数
-
function f(a,b){ return (a-b)//由小到大进行排序 //return(b-a)//由大到小进行排序 } var a = [3,1,2,4,5,7,6]; a.sort(f); console.log(a);
-
-
数组转化
-
toString() 将数组转换成一个字符串--返回新字符串
var a = [1,2,3,4,5] var s = a.toString(); console.log(s);//"1,2,3,4,5" ``` -
join() 与split()相对--返回新字符串
var a = [1,2,3]; var s = a.join("=="); console.log(s);//"1==2==3"
遍历方法
Array.from ----返回新数组
-
把拥有length属性的对象[类数组]或者可迭代对象,转换成真正的数组。
- 该类数组对象必须有length属性,用于指定数组长度。如果没有length属性,那么转换后的数组是一个长度为0的空数组。
- 该类数组对象的属性名必须为数值型或字符串型数字,否则返回指定长度数组,每一个值是undefined
-
from()拥有两个参数,第一个参数就是传入类数组对象,第二个参数用来对数组处理,返回处理后的值到要返回的数组里。
-
let arr = [1,2,3,3] let set = new Set(arr) console.log(Array.from(set,item => item +1))//[2,3,4] let str = "hello"; console.log(Array.from(str))//['h','e','l','l','o'];
-
for/for...in/for...of --原数组遍历
- for结合length属性与中括号[]遍历数组
- for...in --遍历数组索引,利用[]获取值
- for...of --遍历数组的值。
在原数组上迭代
-
array.forEach(callbackfn[,thisArg])
- 参数1,回调函数,包含元素值、元素下标索引和数组对象三个参数
- 参数2,可选参数,设置回调函数中this引用的对象。如果省略,则this为undefined
- 迭代数组
-
array.every(callbackfn[,thisArg]) --要每一个
- 参数1,回调函数,包含元素值、元素下标索引和数组对象三个参数
- 参数2,可选参数,设置回调函数中this引用的对象。如果省略,则this为undefined
- 每个元素调用函数一次,但是不会为空位元素调用回调函数,如果每次调用函数都返回true,则every返回true,否则返回false
- 如果数组没有元素,返回true
-
array.some(callbackfn[,thisArg]) --只要一个
- 参数1,回调函数,包含元素值、元素下标索引和数组对象三个参数
- 参数2,可选参数,设置回调函数中this引用的对象。如果省略,则this为undefined
- 每个元素调用函数一次,但是不会为空位元素调用回调函数,如果每次调用函数都返回false,则some返回false,否则返回true
- 如果数组没有元素,返回true
-
array.reduce(callbackfn[,thisArg]) --汇总所有,前后联系
-
第一个参数,回调函数
-
可选参数,指定初始值。
-
reduce不会为空位元素调用该回调函数
-
回调函数语法格式--参数
- 第一个参数previousValue:上一次调用回调函数的返回值。如果reduce包含参数初始值,则第一次回调函数,pV为初始值
- currentValue:当前元素值
- 当前元素的下标索引
- arry:数组对象
-
-
array.reduceRight(callbackfn[,thisArg])
- 和reduce一样,不一样的是从右向左对数组中所有元素调用指定回调函数
返回新数组的方法
-
array.map(callbackfn[,thisArg]) --映射数组
- 参数1,回调函数,包含元素值、元素下标索引和数组对象三个参数
- 参数2,可选参数,设置回调函数中this引用的对象。如果省略,则this为undefined
- 为数组中每个元素调用回调函数一次,但不会为空位元素调用回调函数。
- 返回新数组,新数组包含回调函数返回值的列表
-
array.filter(callbackfn[,thisArg]) --过滤掉不符合回调函数的元素
- 参数1,回调函数,包含元素值、元素下标索引和数组对象三个参数
- 参数2,可选参数,设置回调函数中this引用的对象。如果省略,则this为undefined
- 为数组每个元素调用回调函数一次,但不会为空位元素调用回调函数。
- 返回新数组,包含回调函数返回true的所有函数
-
[ES6]find(callback) --在每个元素上执行callback,如果返回true,则返回该元素
-
[ES6]findIndex(callback)--与find类似,不过返回的是匹配元素的下标索引
-
[ES6]includes(callback)--与find类似,如果匹配到元素,返回true,代表找到了