数组常见方法,数组的循环及使用区别
filter方法:创建一个新数组,新数组的元素是符合指定条件的元素,不会检测空数组,不会改变原数组。
是否改变原数组:不改变
const arr = [0,1,2,3,4] const arr2 = arr.filter(item=>item>2) alert(arr);//0,1,2,3,4 alert(arr2);//3,4
map方法:返回一个新数组,新数组的元素是原数组元素按照顺序依次处理后的值。
是否改变原数组:不改变
const arr = [0,1,2,3,4] const arr2 = arr.map(item=>item+2) alert(arr);//0,1,2,3,4; alert(arr2);//2,3,4,5,6;
foreach方法:循环调用数组的每个元素,传递给回调函数,不可以结束循环。例:将数组的数据循环添加进一个新数组。不会返回执行结果。
提前中断:不可直接中断
是否改变原数组:改变
forEach(当前值,当前值索引,数组对象本身)
根据其特点,常用情况肯定是对于数组的操作,并且过程不需要中断,且对原数组不会造成影响。另外它不支持continue,非要的话可以使用return false或true代替。break可以用try|catch|every|some代替。
const arr = [0,1,2,3,4] const arr2 = [] arr.forEach(item=>arr2.push(item)) alert(arr);//0,1,2,3,4 alert(arr2);//0,1,2,3,4
concat方法:合并数组。合并数组和参数,合并数组和数组。
是否改变原数组:不改变
//数组直接和参数合并 const arr = [0,1,2] alert(arr.concat(3,4));//0,1,2,3,4 //2个数组合并 const arr2 = [0,1,2] const brr = [3,4] alert(arr2.concat(brr))//0,1,2,3,4 //3个数组合并 const arr3 = [0,1] const brr = [2] const crr = [3,4] alert(arr3.concat(brr,crr))//0,1,2,3,4
join方法:把数组中的所有元素放入一个字符串。元素是通过指定的分隔符进行分割的。
const arr = [0,1,2,3,4] alert(arr.join('+'))//0+1+2+3+4
push方法:在数组的末尾增加元素,可以一次增加多个元素。
const arr = [0,1] arr.push(2) arr.push(3,4) alert(arr)//0,1,2,3,4
pop方法:在数组的末尾删除一个元素
const arr = [1,2,3,4] arr.pop alert(arr)//1,2,3
shift方法:删除数组的第一个元素
const arr = [0,1,2,3] arr.shift() alert(arr)//1,2,3
unshift方法:在数组的开头增加元素,可以一次增加多个元素
const arr = [3,4] arr.unshift(2) arr.unshift(0,1) alert(arr)//0,1,2,3,4
splice方法:删除、插入、替换元素。
语法:this.arr.splice(index,num,value)
//删除index=1的1个元素 const arr = [0,1] arr.splice(1,1) alert(arr)//0 //插入 在index=3插入3 const arr2 = [0,1,2,4] arr2.splice(3,0,3) alert(arr2)//0,1,2,3,4 //替换index=3的一个元素 const arr3 = [0,1,2,5,4] arr3.splice(3,1,3) alert(arr3)//0,1,2,3,4
sort()方法:对数组进行排序
const arr = [2,1,3] arr.sort() alert(arr)//1,2,3
reverse()方法:将数组进行反转
const arr = [2,1,0] arr.reverse() alert(arr)//0,1,2
slice()方法:
从数组返回指定的元素
语法:arr.slice(start,end),即要返回元素的起始和结束位置。
start: 必须。规定从何处开始选取。如果是负数,那么久从数组尾部开始计算位置。-1指最后一个元素。
end:可选。规定从何处结束选取。该参数是数组片段结束处的数组下标。如果没有指定该参数,那么切分的数组包含从start到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。
const arr = [0,1,2,3] alert(arr.slice(1))//0,1,2,3 alert(arr.slice(-1))//3 alert(arr.slice(-2))//2,3 alert(arr.slice(1,3))//1,2
find方法:返回符合要求的第一个数组元素。
提前中断:可以;
改变原数组:否
const arr = [0,1,2,3] const arr 2 = arr.find(item=>item<5)//0
findIndex()方法:返回符合函数条件的数组元素下标,数组中的每个元素都调用一次函数执行:空数组不会执行。
返回符合条件元素在数组里的第一个元素位置,没有符合条件的元素返回-1
提前中断:
改变原数组:否
const arr = [0,1,2,3] const arr2 = arr.findIndex(item=>item==3)//3 const arr3 = arr.findIndex(item=>item<2)//0 const arr4 = arr.findIndex(item=>item == 5)//-1
some()方法:检测数组中的元素是否满足指定条件,依次执行数组中的每个元素;如果有一个元素满足条件,则表达式返回true,剩余的元素不会再执行检测。如果没有满足条件的元素,则返回false。
const arr = [0,1,2,3] const arr2 = arr.some(item=>item<2)//true const arr3 = arr.some(item=>item>10)//false
every()方法:使用指定函数检测数组中的所有元素是否都满足条件,空数组不会执行。如果数组中检测到有一个元素不满足,则整个表达式返回false,则剩余元素不会再进行检测。
如果所有元素都满足条件,则返回true。
const arr = [0,1,2,3,4] const arr2 = arr.every(item=>item<2)//false const arr3 = arr.every(item=>item<5)//true
循环:
1.for()(数组)
提前中断:可以
2.for in()(对象/数组)
提前中断:可以
一般用于遍历对象,获取属性的时候用到多些 for(key in value)
3.for of()
4.forEach()(数组)
foreach方法对数组的每个元素执行一次给定的函数。
5.reduce()(数组)
6.map()(数组)
map方法创建一个新数组,其结果是该数组中的每个元素是调用一次提供的函数后的返回值。
7.flat()
8.flatMap()
9.filter()
filter()方法创建一个新数组,其包含通过函数条件过滤的所有元素,不会对空数组处理,会直接返回。
资料来自:https://www.tnblog.net/13340910616/article/details/6160
https://blog.csdn.net/weixin_44181180/article/details/119244185