广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >JavaScript中Array的filter函数详解
  • 425
分享到

JavaScript中Array的filter函数详解

2024-04-02 19:04:59 425人浏览 安东尼
摘要

目录描述理解示例原生实现描述 filter为数组中的每个元素调用一次callback函数,并利用所有使得callback返回 true 或等价于 true 的值的元素创建一

描述

filter数组中的每个元素调用一次callback函数,并利用所有使得callback返回 true 或等价于 true 的值的元素创建一个新数组。callback只会在已经赋值的索引上被调用,对于那些已经被删除或者从未被赋值的索引不会被调用。那些没有通过callback 测试的元素会被跳过,不会被包含在新数组中。

理解

filter不会改变原数组,它返回过滤后的新数组。

filter遍历的元素范围在第一次调用callback之前就已经确定了。在调用filter之后被添加到数组中的元素不会被filter遍历到。如果已经存在的元素被改变了,则他们传入callback的值是filter遍历到它们那一刻的值。被删除或从来未被赋值的元素不会被遍历到。

示例

过滤长度大于6的

const Words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];

const result = words.filter(word => word.length > 6);
console.log(result);
// expected output: Array ["exuberant", "destruction", "present"]

使用filter创建了一个新数组,该数组的元素由原数组中值大于 10 的元素组成。

function isBigEnough(element) {
  return element >= 10;
}
var filtered = [12, 5, 8, 130, 44].filter(isBigEnough);
// filtered is [12, 130, 44]

使用filter()根据搜索条件来过滤数组内容

var fruits = ['apple', 'banana', 'grapes', 'manGo', 'orange'];


function filterItems(query) {
  return fruits.filter(function(el) {
      return el.toLowerCase().indexOf(query.toLowerCase()) > -1;
  })
}
console.log(filterItems('ap')); // ['apple', 'grapes']
console.log(filterItems('an')); // ['banana', 'mango', 'orange']

据搜索条件来过滤数组内容

var fruits = ['apple', 'banana', 'grapes', 'mango', 'orange'];


function filterItems(query) {
  return fruits.filter(function(el) {
      return el.toLowerCase().indexOf(query.toLowerCase()) > -1;
  })
}
console.log(filterItems('ap')); // ['apple', 'grapes']
console.log(filterItems('an')); // ['banana', 'mango', 'orange']

原生实现

filter 被添加到 ECMA-262 标准第 5 版中,因此在某些实现环境中不被支持。可以把下面的代码插入到脚本的开头来解决此问题,该代码允许在那些没有原生支持 filter 的实现环境中使用它。该算法是 ECMA-262 第 5 版中指定的算法,假定 fn.call 等价于 Function.prototype.call 的初始值,且 Array.prototype.push 拥有它的初始值。

if (!Array.prototype.filter){
  Array.prototype.filter = function(func, thisArg) {
    'use strict';
    if ( ! ((typeof func === 'Function' || typeof func === 'function') && this) )
        throw new TypeError();

    var len = this.length >>> 0,
        res = new Array(len), // preallocate array
        t = this, c = 0, i = -1;
    if (thisArg === undefined){
      while (++i !== len){
        // checks to see if the key was set
        if (i in this){
          if (func(t[i], i, t)){
            res[c++] = t[i];
          }
        }
      }
    }
    else{
      while (++i !== len){
        // checks to see if the key was set
        if (i in this){
          if (func.call(thisArg, t[i], i, t)){
            res[c++] = t[i];
          }
        }
      }
    }

    res.length = c; // shrink down array to proper size
    return res;
  };
}

到此这篇关于javascript中Array的filter函数详解的文章就介绍到这了,更多相关js filter 内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: JavaScript中Array的filter函数详解

本文链接: https://www.lsjlt.com/news/164313.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JavaScript中Array的filter函数详解
    目录描述理解示例原生实现描述 filter为数组中的每个元素调用一次callback函数,并利用所有使得callback返回 true 或等价于 true 的值的元素创建一...
    99+
    2022-11-13
  • JavaScript中Array的filter函数怎么使用
    这篇文章主要介绍“JavaScript中Array的filter函数怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“JavaScript中Array的filter函数怎么使用”文章能帮助大家解...
    99+
    2023-07-02
  • 一文详解Python中的Map,Filter和Reduce函数
    目录1. 引言2. 高阶函数3. Lambda表达式4. Map函数5. Filter函数6. Reduce函数7. 总结1. 引言 本文重点介绍Python中的三个特殊函数Map,...
    99+
    2022-11-11
  • 关于JavaScript的Array数组方法详解
    目录数组的方法1. push() 添加2. pop() 删除4. shift() 删除7. splice() 删除8. concat() 连接9. join()10. re...
    99+
    2023-05-20
    JavaScript 数组 JavaScript Array
  • python中三种高阶函数(map,reduce,filter)详解
    map(function,seq[,seq2]) 接收至少两个参数,基本作用为将传入的函数依次作用到序列的每个元素,并且把结果作为新的序列 返回一个可迭代的map对象 f...
    99+
    2022-11-12
  • 详解Python中高阶函数(map,filter,reduce,sorted)的使用
    目录什么是高阶函数自定义一个高阶函数常用的内置高阶函数map函数参数说明功能实例filter函数功能实例reduce函数功能实例sorted函数参数说明功能实例sort和sorted...
    99+
    2022-11-10
  • 详解JavaScript中的replace()函数
    JavaScript中的replace()函数是用于替换字符串中的某个子串的方法。该方法接受两个参数:要替换的子串和替换后的字符串。...
    99+
    2023-09-09
    java
  • Javascript中的async函数详解
    前言:async 是“异步”的简写,async 用于申明一个 function 是异步的,而 await 用于等待一个异步方法执行完成,await 只能出现在...
    99+
    2022-11-13
  • JavaScript 中的 parseInt() 函数详解
    目录参数描述总结parseInt() 函数可解析一个字符串,并返回一个整数。 parseInt 可以接受 2 个函数。 parseInt(string, radix)&nb...
    99+
    2023-05-19
    js parseInt() 函数 js parseInt()
  • 怎么在JavaScript中使用filter函数
    这篇文章给大家介绍怎么在JavaScript中使用filter函数,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。JavaScript的特点1.JavaScript主要用来向HTML页面添加交互行为。2.JavaScri...
    99+
    2023-06-14
  • Python内置函数zip map filter的使用详解
    并行遍历zip zip会取得一个或多个序理为参数,然后返回元组的列表,将这些序列中的并排的元素配成对。 L1=[1,2,3,4] L2=[5,6,7,8] L3=zip(L1,L...
    99+
    2022-11-12
  • JavaScript之Array常见的方法详解
    目录不改变原数组的方法1、concat语法:参数:返回值:2、join语法:参数:返回值:注意:3、slice语法:参数:返回值:4、toString语法:返回值:改变原数组的方法1...
    99+
    2022-11-12
  • Python学习之魔法函数(filter,map,reduce)详解
    目录filter() 函数map() 函数reduce() 函数filter() 函数 小实战今天的这一章节我们来学习一下,Python 中的三个高级函数,也被称之为 魔法...
    99+
    2022-11-13
  • R语言行筛选的方法之filter函数详解
    目录1. 数据2. 生成ID列和类型3. 提取effect大于0.1的行4. 提取加性效应,且effect小于0的行5. 根据部分行名删选6. 固定字符特征进行行筛选总结下面介绍一下...
    99+
    2022-11-13
  • 详解Python中的Array模块
    Python中的array模块是一个预定义的数组,因此其在内存中占用的空间比标准列表小得多,同时也可以执行快速的元素级别操作,例如添加、删除、索引和切片等操作。此外,数组中的所有元素...
    99+
    2023-05-15
    Python Array模块 Python Array
  • 详解JavaScript的函数简介
    目录函数简介函数function创建函数构造函数创建函数函数声明创建函数函数表达式创建函数函数的参数形参(形式参数):实参(实际参数):函数的调用通过对象调用new调用函数的返回值立...
    99+
    2022-11-12
  • JavaScript函数的使用详解
    目录1. 声明函数2. 调用函数3. 函数的参数4. 函数的返回值5. arguments的使用6. 函数可以调用另外一个函数7. 函数的两种声明方式总结1. 声明函数2. 调用函数...
    99+
    2022-11-12
  • 怎么在Javascript中使用filter()函数筛选数据
    本篇文章给大家分享的是有关怎么在Javascript中使用filter()函数筛选数据,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1.filter()语法:var ...
    99+
    2023-06-14
  • 详解Vue中的filter与directive
    目录vue自定义指令--directive全局指令局部指令使用钩子函数(均为可选)使用及参数vue中的过滤器分为两种:局部过滤器和全局过滤器 过滤器可被用于一些常见的文本格式化。过滤...
    99+
    2022-11-12
  • JavaScript中的回调函数详细解析
    以上就是JavaScript中的回调函数详细解析的详细内容,更多请关注编程网其它相关文章!...
    99+
    2022-11-23
    JavaScript
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作