JavaScript中有许多好用的数组方法,例如说forEach,filter...等等

那这些方法是都有什么用途呢?以及自己能否写一个方法出来替代呢?

forEach方法

日常用法

​ 我们拿到一组数据的时候,通常需要通过遍历循环拿到自己想要的数据。 forEach函数能够做到这一点,通常是这样使用的。例如说我们下面数组这种,需要遍历循环这个数组。就能得到以下结果。

参数传递

forEach() 方法按升序为数组中含有效值的每一项执行一次 callback 函数。可依次向 callback 函数传入三个参数:

  1. 数组当前项的值 (ele)
  2. 数组当前项的索引 (index)
  3. 数组对象本身 (self)
        var arr = [{name: 'abc', desc: '技术好', sex: 'm'}, {name: 'adsds', desc: '技术好', sex: 'f'}, {name: 'aaseed', desc: '技术好', sex: 'm'},{name: 'acccc', desc: '技术好', sex: 'f'}]// forEach()arr.forEach(function (ele, index, self) {console.log(ele, ele.name, ele.sex);})

实现一个forEach()方法

        Array.prototype.forEach = function (func) {var len = this.length;var _this = arguments[1] != undefined ? arguments[1] : window;//_this 值的是可以传递this指向for (var i = 0; i < len; i++) {func.apply(_this, [this[i], i, this]);}}var obj = { name: 'feng' }function deal(ele, index, self) {console.log(ele, index, self, this);}arr.forEach(deal, obj);

​ 就能得到一个功能相同的方法

filter方法

日常用法

filter() 方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。MDN如是说。例如说我们想要得到上面数组中name为accc的数据

        var newArr = arr.filter(function (ele, index, array) {return ele.name == 'acccc'})

传递参数

  • callback

    用来测试数组的每个元素的函数。返回 true 表示该元素通过测试,保留该元素,false 则不保留。它接受以下三个参数:

    1. element数组中当前正在处理的元素。
    2. index可选正在处理的元素在数组中的索引。
    3. array可选调了 filter 的数组本身。
  • thisArg可选

    执行 callback 时,用于 this 的值。

实现一个myfilter方法()

​ 想到filter能够过滤想要的东西,那肯定是有遍历的。

    Array.prototype.myfilter = function (func) {var arr = [];var len = this.length;var _this = arguments[1] || window;for (var i = 0; i < len; i++) {func.apply(_this, [this[i], i, this]) && arr.push(this[i]);}return arr;}var obj = { name: 'feng' }var newArr = arr.myfilter(function (ele, index, self) {if (ele.sex == 'm') {return true;} else {return false;}})console.log(newArr);

​ 我们在调用myfilter方法把性别是男的过滤出来

本文由博客群发一文多发等运营工具平台 OpenWrite 发布

filter函数的用法_JavaScript中forEach和filter的用法和原理相关推荐

  1. promise用法_JavaScript中的async/await的用法和理解

    昨天更新的是"JavaScript中的Promise使用详解",其实也就是说了下基本用法和自己对Promise的理解,可能有错误之处,也欢迎指出.今天就说一说"JavaS ...

  2. python中sorted函数的用法_Python中map,reduce,filter和sorted函数的使用方法

    map map(funcname, list) python的map 函数使得函数能直接以list的每个元素作为参数传递到funcname中, 并返回响应的新的list 如下: def sq(x): ...

  3. matlab的filter函数,filter函数用法 matlab中filter函数的用法

    matlab中filter函数的用法如果你深爱的人此刻在你身边陪你,你怎么会有时间来看这些文字呢 离散系统的差分方程为 2y[k]-y[-1]-3y[k-2]=2x[k]-x[k-1] x[k]=(0 ...

  4. Python函数式编程中map()、reduce()和filter()函数的用法

    Python中map().reduce()和filter()三个函数均是应用于序列的内置函数,分别对序列进行遍历.递归计算以及过滤操作.这三个内置函数在实际使用过程中常常和"行内函数&quo ...

  5. filter函数的用法_函数周期表丨筛选丨表丨CALCULATETABLE

    CALCULATETABLE函数 CALCULATETABLE函数属于"筛选"类函数,隶属于"表函数". 某种意义上来说,CALCULATETABLE函数其实就 ...

  6. python中divmod函数的用法_Python中divmod函数的用法

    Python中divmod函数的用法,语言,余数,是一种,面向对象,函数 Python中divmod函数的用法 Python中divmod函数的用法 在Python中divmod函数的作用是把除数和余 ...

  7. filter() 函数的用法

    下面通过一个实例来演示 filter() 函数的用法.比如说,定义一个 list 变量,里边放置若干学生的成绩信息(包括语文.数学和英语).要求使用 filter() 函数筛选出偏科的学生名单. 如何 ...

  8. python中filter函数的用法

    描述 filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象,如果要转换为列表,可以使用 list() 来转换. 该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为 ...

  9. html中filter函数的用法,filter函数怎么使用

    JavaScript中的arr.filter()函数用于从给定数组创建一个新数组,该数组仅包含给定数组中满足参数函数设置条件的那些元素.下面我们就来具体看一下filter()的使用方法. filter ...

最新文章

  1. Ubuntu 安装 Docker
  2. 2016 大数据版图
  3. 基于语音识别的微博签到系统
  4. PHP的Smarty较为完整的笔记
  5. 股市大涨是不是楼市就要跌了?
  6. mysql ado.net 实体数据模型_Visual Studio2017中如何让Entity Framework工具【ADO.NET实体数据模型】支持MYSQL数据源...
  7. 大脑可以自动修复酗酒造成的脑细胞损坏
  8. 设计模式总结(Java)—— 单例模式
  9. 95-230-026-源码-WordCount走读-本地运行SubmitJob的过程
  10. 【shell】Shell编程的前篇以及通过编程实现,jdk的安装
  11. mvc创建连接mysql_五、 创建连接串连接本地数据库(ASP.NET MVC5 系列)
  12. php fopen下载文件,php fopen下载远程文件的函数 | 学步园
  13. 安卓自定义控件,自行绘制文字
  14. 4g通信模块怎么连接sim卡_SIM卡GPRS模块知识详解 浅谈SIM卡GPRS之原理模块
  15. C++ 数学与算法系列之高斯消元法求解线性方程组
  16. 2017,知识与财富
  17. 【最新】2020年注册测绘师考试测绘综合能力真题及参考答案
  18. java毕业设计旅拍平台源码+lw文档+mybatis+系统+mysql数据库+调试
  19. 第一次尝试使Windows Live Writer发布日志
  20. 《四维全息算法》9--四维全息算法的基本思路是什么?股市数据是具有分形迭代特征的随机游走

热门文章

  1. c++动态绑定和动态绑定
  2. Android——数据存储(课堂代码整理:SharedPreferences存储和手机内部文件存储)...
  3. HDU 1253-大逃亡(裸-DBFS)
  4. 个人密码安全策略 [转载]
  5. 通用权限管理系统组件 (GPM - General Permissions Manager) 给信息管理系统加一个初始化的功能,调用存储过程...
  6. containers文件夹可以删除吗_电脑进行C盘清理,appdata文件夹可以删除吗?
  7. php识别号码格式豹子,[转载]php新手入门之PHP常用特殊运算符号
  8. 我的世界java和pe版_《我的世界》pe版不一样的方块世界
  9. tf callbacks
  10. java 位运算符赋值_java-运算符(算术、赋值 =、关系、逻辑、三元、位运算符)...