1、ES6中数组遍历的方法有哪些?有何区别?
forEach()
array.forEach((args)=>{函数体})
循环遍历数组的方法,不会产生新数组,返回undefined.
map()
array.map((args)=>{函数体})
map函数可以看成是一种映射函数,原数组被映射成对应的新数组,返回一个新数组,
不改变原数组;
适合对一个数组中的每个元素进行相同的操作,速度比forEach()快
filter()
array.filter((args)=>{函数体})
filter函数可以看成是一个过滤函数,返回符合条件的元素的新数组,不改变原数组;
reduce()
是一个迭代函数。
有四个参数:之前值,当前值,索引值,数组本身;
array.reduce((previous,current,index,array)=>{
},初始化第一个参数)
find()
查找到第一个符合条件的元素,则立刻返回,返回的是一个对象,filter返回的
是一个新数组。
let array = [1,2,3,4]
array.find(i=>{i>2}) //3
array.filter(i=>i>2) //[3,4]
every() some()
every:若目标数组中每一个对象都符合条件则返回true,否则返回false;
some:若目标中有一个或一个以上的对象符合条件则返回true,否则返回false;
2、改变原数组的方法有哪些?
shift()
array.shift()
方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。
会改变原数组的长度。
unshift()
array.unshift()
向数组的开头添加一个或多个元素,并返回新的长度。
pop()
删除最后一个并返回删除的元素,改变原数组的长度。
push()
向数组尾部添加,并返回新的长度
reverse()
颠倒数组的顺序,会改变原数组;
sort()
用于对数组元素进行排序;
array.sort((a,b)=> a-b) //升序
array.sort((a,b)=> b-a) //降序
splice()
从数组中添加或删除项目,然后返回被删除的项目,该方法会改变原始数组。
array.splice(index,howmany,items)
index:必须,整数,添加或删除的位置;
howmany:必须,要删除的数量,为0则不删除;
itmes:可选,向数组添加新项目。
3、不改变原数组的方法
concat()
拼接多个数组,返回新的数组
join()
将数组中的所有元素以参数作为分隔符进行分隔,返回一个字符串;
array.join(separator)
separator:可选,指定要使用的分隔符,如果不写,默认使用逗号。
slice()
从已有的数组中返回选定的元素,返回一个新的数组;
array.slice(s,e)
s:必需,开始的位置,-1表示最后一个元素;
e:可选,结束位置。
如果想要删除数组中的一段元素,需要使用方法array.splice()
map()、filter()、some()、every()、find()
这些方法都不会改变原有数组。