1.forEach 没有返回值
let arr = [1,2,3,4,5];
arr.forEach((el,i)=>{
console.log(el)
})
2.map 映射 有返回值
map映射会去遍历数组每一项,但是不会改变元素组,同filter一样返回一个新数组,回调函数返回什么就是什么,对应的新数组的那一项就会是什么。
let arr = [1,2,3,4,5];
const newArr = arr.map((el,i)=>{
return el;
})
console.log(newArr);
this.dataSource = data.map((item, index) => {
return {
...item,
}
})
3.filter过滤器
const westEast = this.dataSource.filter((value) => value.name && value.name === 'xxx')
console.log(westEast.length) 获取到数据中所有的xxx的length
遍历一个数组并返回一个新数组,并且不影响原数组。遍历数组每一项,回调函数返回true,就把这一项添加到新数组中。其中回调函数中有三个参数,(value,index,array),value是每一项,index是索引,array是当前被遍历的数组
注:filter不会对空数组进行检测,filter不会改变原数组
map 与 filter的区别,map返回的新数组与原数组的长度是一样的,是对数组每一项进行操作,返回每一项结果,而filter是返回我们需要的项(就是过滤掉我们不要的项);
map 与forEach的区别:map有返回值,forEach没有返回值
map与forEach的相同点:都只能遍历数组,参数都相同
4.reduce
reduce()方法接收一个函数作为累加器,数组中的每一个值(从左到右)开始缩减,最终计算为一个值。
注:reduce()对于空数组是不会执行回调函数的。
const array1 = [1, 2, 3, 4];
const reducer = (previousValue, currentValue) => previousValue + currentValue;
// 1 + 2 + 3 + 4
console.log(array1.reduce(reducer));
// expected output: 10
// 5 + 1 + 2 + 3 + 4
console.log(array1.reduce(reducer, 5));
// expected output: 15
语法:
array.reduce((total,currentValue,currentIndex,arr),initialValue)