数组的API, 有哪些是纯函数?
纯函数:
- 不改变源数组(没有副作用);
- 返回一个数组
// 纯函数:1. 不改变源数组(没有副作用);2. 返回一个数组
const arr = [10, 20, 30, 40]
// concat 连接两个或更多的数组,并返回结果(新数组)。
const arr1 = arr.concat([50, 60, 70])
// map 通过指定函数处理数组的每个元素,并返回处理后的数组。
const arr2 = arr.map(num => num * 10)
// filter 过滤掉不符合条件的数组元素 (大于25)
// 检测数值元素,并返回符合条件所有元素的数组。
const arr3 = arr.filter(num => num > 25)
// slice 选取数组的一部分,并返回一个新数组。[start, end)
const arr4 = arr.slice(start, end)
非纯函数
// 非纯函数
// push pop shift unshift
// forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数
arr.forEach(function(item,index){
// 遍历数组所有元素
console.log(item) // 10 20 30 40
})
// some() 方法用于检测数组中的元素是否满足指定条件(函数提供)
var aaa = arr.some(function(item,index){
//用来判断所有数组元素 都满足一个条件
if(item < 50){
return true;
}
})
console.log(pd2)//true
// every() 方法用于检测数组所有元素是否都符合指定条件(通过函数提供)
// 如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。
// 如果所有元素都满足条件,则返回 true。
// reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。
var arr = [10, 20, 30, 40]
aa = arr.reduce(function (total, num) {
return total + num
})
console.log(aa); // 100