常见几种循环操作数组(去重,过滤,数据处理等)
一:arr.foreach普通循环可代替传统for循环
forEach有三个参数(上面只写出2个)第一个item为当前循环的数据,第二个index为当前循环的下标值,第三个为循环的数组arr
二:arr.map做数据交互“映射”
map返回一个新的数组,不会改变原数组,需要配合return,return的值会将原数组中的对应值替换掉赋值给新数组 。
map 也是三个参数,和forEach是一样的,但是不同的是他有ruturn,每次循环后都会把本次循环的数据push到一个新数组newArr中,你可以在原数组的基础上做一些处理再赋值进去,不会影响到原数组
三:arr.filter过滤
filter方法的return只有两种情况,true/false;如果返回true就保留这个数据,如果返回false,就删除这个数据。也是返回新数组,不改变原数组。从示例可以看到我们通过循环看出,当元素大于5时,return为 true,则会把这个元素push到新数组newNumArr,而不会影响到原数组numArr
四:arr.reduce可以对数组做一些去重,求和,次方等处理
对象数组去重
let arr= [
{id: 0, name: “小明”},
{id: 1, name: “小张”},
{id: 2, name: “小李”},
{id: 3, name: “小孙”},
{id: 1, name: “小周”},
{id: 2, name: “小陈”},
];
现在我们要把id重复的去重,像这种情况其他去重方式都比较麻烦,但是reduce却可以很优雅的解决这个问题
reduce()方法接收一个回调函数作为第一个参数,回调函数又接受四个参数,分别是preItem(上次循环回调函数执行的值) ,item(本次循环回调函数执行的值) , index (本次循环数据的下标), arr (循环的数组)
因为reduce()方法返回的是最后一次调用回调函数的返回值,所以很方便就可以解决去重的问题
数组求和以及数组求次方
从示例可以看出对数组进行求和(从1累加到10)和次方(2的2次方的4次方)都是比较方便的