JS中every和some,filter和find,map和forEach的区别
1.every和some
返回布尔类型值
every:查看每一个元素,如果都符合条件则返回true(返回值为 true / false )
some:查看每一个元素,只要有符合条件的元素就返回true(返回值为 true / false )
var a = [23, 12, 45, 6, 36]
function ageSort(age) {
return age >= 18
}
console.log(a.every(ageSort)); //false
console.log(a.some(ageSort)); //true
2. filter和find
filter:返回符合条件的第一个元素
find:返回符合条件的所有元素的数组(新数组)
var a = [23, 12, 45, 6, 36]
function ageSort(age) {
return age >= 18
}
console.log(a.filter(ageSort)); //23
console.log(a.find(ageSort)); //[23,45,36]
3. map和forEach
forEach:循环遍历数组,没有返回值
第一个参数是数组元素值,第二个参数是索引,第三个参数是数组本身
var a = [1, 2, 3, 4]
a.forEach(
function (value, index, array) {
console.log(value, index, array);
}
);
map:将一个数组映射为另一个数组(一一对应,有返回值)
第一个参数是数组元素值,第二个参数是索引,第三个参数是数组本身
var a = [1, 2, 3, 4]
var b = a.map(
function (value) {
return value * 2
}
)
4. 累计器reduce
第一个参数prev:表示上一次调用回调时的返回值
第二个参数value:表示示当前正在处理的数组元素
第三个参数index:表示当前处理数组元素的索引
第四个参数arr:表示原数组
arr.reduce(function(prev,value,index,arr){
...
}, init);
var a = [1, 2, 3, 4, 5]
var b = a.reduce(function (prev, value) {
return prev+ value
})
console.log(b);