> https://www.cnblogs.com/hexiaobao/p/12108572.html
map
map() 方法定义在Javascript 的array中,它返回一个新的数组,数组中的元素为原始数组调用函数处理后的值
let arr=['d','s','r','c']
let arr2=arr.map(item=>item==='s')
console.log(arr2)
结果:[false,true,false,false]
map会对数组的每一项进行处理,返回新数组,返回的新数组包含对之前每一项处理结果;
filter(过滤)
filter中的回调函数有一个要求:必须return 返回一个boolean值 (条件)
filter()方法创建一个新的数组,新的数组中的元素通过检查指定数组中符合条件的所有元素
let arr = ['d','s','r','c']
let arr2=arr.filter(function(item){
return item==='s'
})
console.log(arr2)
结果:[‘s’]
filter只会把符合条件的数值返回,形成一个新的数组;
some
some() 方法用于检测数组中的元素是否满足指定条件(函数提供)。some() 方法会依次执行数组中的每个元素:如果有一个元素满足条件,则表达式返回true,剩余的元素不会再执行检测,如果没有满足条件的元素,则返回false;
let arr=['d','s','r','c']
let arr2=arr.some(item=>item==='s')
console,log(arr2)
结果:true
some() 会一直运行到回调函数返回true
every
every()方法用于检测数组所有元素都符合指定条件(通过函数提供)。every()方法使用指定函数检测数组中的所有元素:如果数组中检测到有一个元素不满足,则整个表达式返回false,则剩余的元素不会再进行检测。如果所有元素都满足条件,则返回true;
let arr=['d','s','r','c'];
let arr2=arr.every(item=>item==='s')
console.log(arr2)
结果:false
every() 会一直运行直到回调函数返回false;
reduce
语法:
array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
initialValue初始值
reduce作用对数组中所有的内容进行汇总
原理:
let total = nums.reduce(function(prevValue,item){
return prevValue+item
},0)
prevValue:0 item:数组index0
prevValue:index0+0 item:index1
prevValue:index0+index1+0 item:index2
reduce()方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。reduce()可以作为一个高阶函数,用于函数compose.
let arr=['d','s','r',''c];
let arr2=arr.reduce((total,item)=>{
return total+item
},'')
console.log(arr2)
reduceRight
功能和reduce()功能是一样,不同的是reduceRight()从数组的末尾向前将数组中的数组项累加
for in 和 for of 的遍历异同
for in 循环可以用来遍历对象的可枚举属性列表,使用for in遍历对象无法直接获取到值,但是for of 能取到值(前提对象本身定义可迭代器)
console.log('for..in')
let arr=['d','s','r','c'];
for (const key in arr){
if(arr.hasOwnProperty(key)){
console.log(key)}
//结果:0,1,2,3,4,5
}
console.log('for...of');
for (const iterator of arr){
console.log(iterator)
// 结果:d s r c
}
简单总结就是,for in 遍历的是数组的索引(即键名),而for of遍历的是数组元素值。
for…in 总是得到对象的key或数组、字符串的下标。
for…of 总是得到对象的value 或数组、字符串的值,另外还可以用于遍历Map和Set