> https://www.cnblogs.com/hexiaobao/p/12108572.html

map

map() 方法定义在Javascript 的array中,它返回一个新的数组,数组中的元素为原始数组调用函数处理后的值

  1. let arr=['d','s','r','c']
  2. let arr2=arr.map(item=>item==='s')
  3. console.log(arr2)

结果:[false,true,false,false]

map会对数组的每一项进行处理,返回新数组,返回的新数组包含对之前每一项处理结果;

filter(过滤)

filter中的回调函数有一个要求:必须return 返回一个boolean值 (条件)

filter()方法创建一个新的数组,新的数组中的元素通过检查指定数组中符合条件的所有元素

  1. let arr = ['d','s','r','c']
  2. let arr2=arr.filter(function(item){
  3. return item==='s'
  4. })
  5. console.log(arr2)

结果:[‘s’]
filter只会把符合条件的数值返回,形成一个新的数组;

some

some() 方法用于检测数组中的元素是否满足指定条件(函数提供)。some() 方法会依次执行数组中的每个元素:如果有一个元素满足条件,则表达式返回true,剩余的元素不会再执行检测,如果没有满足条件的元素,则返回false;

  1. let arr=['d','s','r','c']
  2. let arr2=arr.some(item=>item==='s')
  3. console,log(arr2)

结果:true
some() 会一直运行到回调函数返回true

every

every()方法用于检测数组所有元素都符合指定条件(通过函数提供)。every()方法使用指定函数检测数组中的所有元素:如果数组中检测到有一个元素不满足,则整个表达式返回false,则剩余的元素不会再进行检测。如果所有元素都满足条件,则返回true;

  1. let arr=['d','s','r','c'];
  2. let arr2=arr.every(item=>item==='s')
  3. console.log(arr2)

结果:false
every() 会一直运行直到回调函数返回false;

reduce

语法:
array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
initialValue初始值
reduce作用对数组中所有的内容进行汇总
原理:

  1. let total = nums.reduce(function(prevValue,item){
  2. return prevValue+item
  3. },0)
  4. prevValue:0 item:数组index0
  5. prevValue:index0+0 item:index1
  6. prevValue:index0+index1+0 item:index2

reduce()方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。reduce()可以作为一个高阶函数,用于函数compose.

  1. let arr=['d','s','r',''c];
  2. let arr2=arr.reduce((total,item)=>{
  3. return total+item
  4. },'')
  5. console.log(arr2)

结果:
dsrc
因为字符串,reduce就是直接拼接

reduceRight

功能和reduce()功能是一样,不同的是reduceRight()从数组的末尾向前将数组中的数组项累加

for in 和 for of 的遍历异同

for in 循环可以用来遍历对象的可枚举属性列表,使用for in遍历对象无法直接获取到值,但是for of 能取到值(前提对象本身定义可迭代器)

  1. console.log('for..in')
  2. let arr=['d','s','r','c'];
  3. for (const key in arr){
  4. if(arr.hasOwnProperty(key)){
  5. console.log(key)}
  6. //结果:0,1,2,3,4,5
  7. }
  8. console.log('for...of');
  9. for (const iterator of arr){
  10. console.log(iterator)
  11. // 结果:d s r c
  12. }

简单总结就是,for in 遍历的是数组的索引(即键名),而for of遍历的是数组元素值。
for…in 总是得到对象的key或数组、字符串的下标。
for…of 总是得到对象的value 或数组、字符串的值,另外还可以用于遍历Map和Set