首页 > 编程语言 >前端javasript——forEach、map、filter和reduce的使用场景

前端javasript——forEach、map、filter和reduce的使用场景

时间:2023-11-04 15:06:54浏览次数:51  
标签:function map callbackfn javasript reduce forEach 数组 thisArg array

(文章目录) 76d5545a9f1f4cd49636b82eca2f5582.gif

⭐前言

大家好,我是yma16,不止前端,本文分享关于前端javasript——forEach、map、filter、reduce区别与使用。 自我介绍 前端->全栈开发,csdn 内容合伙人,2023 csdn新星计划 Node赛道 Top1,csdn 2023 新星计划vue3+ts赛道导师,阿里云社区专家博主,华为云享专家,前端技术栈:vue2 vue3 react18,后端技术栈:django springCloud。 个人搭建的主页:https://yongma16.xyz

⭐forEach用法

forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数。 参数:

  1. callbackfn 回调函数返回值void即空
  2. thisArg 回调函数的引用对象

查看函数定义

    /**
      * Performs the specified action for each element in an array.
      * @param callbackfn  A function that accepts up to three arguments. forEach calls the callbackfn function one time for each element in the array.
      * @param thisArg  An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.
      */
    forEach(callbackfn: (value: T, index: number, array: T[]) => void, thisArg?: any): void;

demo实例:

const array=[1,2,3,4,5,6,7,8]

console.log(array.forEach(function(item){
    console.log(item)
    console.log('this',this)
},{
    name:"yam16"
}))

运行结果 image.png

forEach传递引用对象进去,作为回调函数的this指向对象 forEach使用场景一般是遍历对象用,也可以传递一个对象作为回调函数引用进行处理

⭐map用法

map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值,按照原始数组元素顺序依次处理元素。 map() 不会改变原始数组 参数:

  1. callbackfn 回调函数返回值是一个数组
  2. thisArg 回调函数的引用对象

函数定义

    /**
      * Calls a defined callback function on each element of an array, and returns an array that contains the results.
      * @param callbackfn A function that accepts up to three arguments. The map method calls the callbackfn function one time for each element in the array.
      * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.
      */
    map<U>(callbackfn: (value: T, index: number, array: T[]) => U, thisArg?: any): U[];

demo示例

const array=[1,2,3,4,5,6,7,8]
console.log(array.map(function(item){
    console.log('this',this)
    if(item%2){
        return item
    }
},{
    name:"yam16"
}))

运行结果,不return,则对于的元素的undefined image.png map使用场景一般是对数据进行重组,返回同等长度的数组

⭐filter用法

filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素, filter不会改变原数组 参数:

  1. callbackfn 回调函数返回值是一个数组
  2. thisArg 回调函数的引用对象

函数定义

    /**
      * Returns the elements of an array that meet the condition specified in a callback function.
      * @param callbackfn A function that accepts up to three arguments. The filter method calls the callbackfn function one time for each element in the array.
      * @param thisArg An object to which the this keyword can refer in the callbackfn function. If thisArg is omitted, undefined is used as the this value.
      */
    filter(callbackfn: (value: T, index: number, array: T[]) => any, thisArg?: any): T[];

demo示例,返回奇数数组

const array=[1,2,3,4,5,6,7,8]
console.log(array.filter(function(item){
    console.log('this',this)
    return item%2
},{
    name:"yam16"
}))

运行结果 image.png

⭐reduce用法

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

  1. function(previousValue,currentValue, index,arr)
  2. initValue

function

  • previousValue 必需。初始值, 或者计算结束后的返回值。
  • currentValue 必需。当前元素
  • currentIndex 可选。当前元素的索引
  • arr 可选。当前元素所属的数组对象。

initValue 初始化值对应 previousValue

函数定义:

    /**
      * Calls the specified callback function for all the elements in an array. The return value of the callback function is the accumulated result, and is provided as an argument in the next call to the callback function.
      * @param callbackfn A function that accepts up to four arguments. The reduce method calls the callbackfn function one time for each element in the array.
      * @param initialValue If initialValue is specified, it is used as the initial value to start the accumulation. The first call to the callbackfn function provides this value as an argument instead of an array value.
      */
    reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T;
    reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T;

demo示例,取出奇数的平方数组

const array=[1,2,3,4,5,6,7,8]
console.log(array.reduce((pre,cur)=>{
    console.log('pre',pre)
    if(cur%2){
        pre.push(Math.pow(cur,2))
    }
    return pre
},[]))

运行结果 image.png

⭐总结

共同点 forEach、map、filter和reduce对空数组都不会执行 不同点 forEach适用于数据遍历,返回boid map适用于数据的重组,不改变数据的长度,长度=原数组长度 filter适用于数据筛选,返回数据元素保存不变,长度<=原数组长度 reduce适用于对数据累加,返回的数据长度可以自由控制

⭐结束

本文分享到这结束,如有错误或者不足之处欢迎指出! cloud-sky

标签:function,map,callbackfn,javasript,reduce,forEach,数组,thisArg,array
From: https://blog.51cto.com/u_16318188/8182035

相关文章

  • 关于批量按顺序下载(reduce+promise)
    参考文章promiseresolverejecthttps://www.cnblogs.com/lunlunshiwo/p/8852984.html#4917337reduce按顺序调用https://juejin.cn/post/7030625338065420302?searchId=202311041036275432B88F9F3A984960AA注意点promise结果的使用reduce中的等待结果数组的存储运行截......
  • Java拾贝第十五天——集合之Map
    从上图中可以发现,Map接口与Collection接口是不同的。Map接口中的每个元素都使用"键值对"的形式存储在集合中。(key→value)其接口定义如下:publicinterfaceMap<K,V>K泛型代表的是key,V泛型代表的是value。在使用Map时必须指定两个具体的类型。Map常见的实现子类:HashMap,TreeM......
  • automapper 两种初始化方式
     另外一种 选择安装AutoMapper.Extensions.Microsoft.DependencyInjection这个包一种像下面这样收动配置,这种只需要引入基础包AutoMapper.IConfigurationProviderconfig=newMapperConfiguration(cfg=>{cfg.AddProfile<TradeApiMappingProfile>();cfg.AddProfil......
  • Util应用框架基础(二) - 对象到对象映射(AutoMapper)
    本节介绍Util应用框架相似对象之间的转换方法.文章分为多个小节,如果对设计原理不感兴趣,只需阅读基础用法部分即可.概述现代化分层架构,普遍采用了构造块DTO(数据传输对象).DTO是一种参数对象,当WebAPI接收到请求,请求参数被装载到DTO对象中.我们需要把DTO对象转换成实体......
  • 内核System.map
    内核System.map是一个文本文件,记录了操作系统内核中各个函数和变量的地址信息。它是通过编译和链接操作系统内核时生成的。System.map文件对于内核调试非常有用,因为它可以提供内核中各个函数和变量的地址。当在内核发生崩溃或者调试时,可以通过System.map文件来定位问题所在的函数......
  • HashMap源码详解
    HashMap简介HashMap是Java语言中的一种集合类,它实现了Map接口,用于存储Key-Value对。它基于哈希表数据结构,通过计算Key的哈希值来快速定位Value的位置,从而实现高效的插入、删除和查找操作。下面我们对照着JAVA1.8中的HashMap源码来分析一下它的内部实现逻辑基本的结构在开始分析......
  • 08Go语言基础之map
    Go语言中提供的映射关系容器为map,其内部使用散列表(hash)实现。mapmap是一种无序的基于key-value的数据结构,Go语言中的map是引用类型,必须初始化才能使用。map定义Go语言中map的定义语法如下:map[KeyType]ValueType其中,KeyType:表示键的类型。ValueType:表示键对应的值的类......
  • lambda,map,filter
    1.LambdaLambda函数是一种匿名函数,它可以在一行内定义,并通常用于需要简单函数的地方。Lambda函数使用lambda关键字后跟参数列表和冒号,然后在冒号后面定义函数的主体。例如:add=lambdax,y:x+yprint(add(2,3))#输出5Lambda函数通常用于传递给高阶函数(如map、filter......
  • Guava中的增强Map - Table、BiMap、Multimap、RangeMap、ClassToInstanceMap
    1.简介  日常开发中使用Map时经常会遇到很多复杂的处理场景,例如:多个键的Map、不仅可以根据键获取值也可以根据值获取键且不用遍历、重复键的Map、数字等范围内映射相同的值、内存中缓存对象等,Guava提供了以上场景的解决方案。场景解决方案具体实现多个键的MapTabl......
  • map知识点总结
    map是STL的一个关联容器,它提供一对一的hash(哈希表)第一个可以称为关键字(key),每个关键字只能在map中出现一次;第二个可能称为该关键字的值(value);map以模板(泛型)方式实现,可以存储任意类型的数据,包括使用者自定义的数据类型。Map主要用于资料一对一映射(one-to-one)的情況,map內部......