JavaScript ES6 Array.filter()方法总结

ES6 数组去重的方法 无论是使用 Set 数据结构、Array.prototype.filter() 函数,还是结合使用 Array.from() 和 Set 数据结构,都可以轻松地去除数组中的重复元素。在处理数组时,有时候我们需要去除其中的重复元素,以便得到唯一的值。ES6 提供了几种方法来实现数组去重,下面我们将详细介绍这些方法,并提供相应的源代码。通过将数组转换为 Set,然后再将 Set 转换回数组,就可以实现数组去重。然后,我们使用 Set 对象将数组转换为 Set。函数创建一个新数组,其中只包含原数组中的唯一元素。 阅读详情

本篇文章参考以下博文

一、定义

   filter() 方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。

   filter 的中文意思是“筛选”,顾名思义,会对数组中的元素挨个进行检查,检查通过的,才能组成新的数组。

二、语法

var newArray = arr.filter(callback(element[, index[, array]])[, thisArg])
  • callback
    用来测试数组的每个元素的函数。返回 true 表示该元素通过测试,保留该元素,false 则不保留。它接受以下三个参数:
    • element
      数组中当前正在处理的元素。
    • index 可选
      正在处理的元素在数组中的索引。
    • array 可选
      调用了 filter 的数组本身。
  • thisArg 可选
    执行 callback 时,用于 this 的值。

三、实例

3.1 过滤数组中的假值

let array= [false, null, undefined, NaN, 0, ""]
array.filter(Boolean)  // []

3.2 数组中不同的部分

let arr1 = [1, 2, 3, 4], arr2 = [3, 4, 5];
let arr= [...arr1, ...arr2].filter(item => !arr1.includes(item) || !arr2.includes(item)) //[1, 2, 5]

3.3 数组去重

let arr = ['name','age','friends','height','weight','name','age']
let newArr = arr.filter((v, index)=> {
    return arr.indexOf(v) === index // 该元素第一次在数组中出现的位置是否等于当前索引值
})

四、转化为 ES5 之后的源码

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, // 这一步是保证 this.length 为正整数
        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;
  };
}

  上面代码中 >>> 0 是为了保证 this.length 为正整数,具体解释戳 这里




去重数组的利器——JavaScript中的ES6数组去重方法 ES6中引入了Set数据结构,它类似于数组,但是成员的值都是唯一的,没有重复的值。利用这个特性,我们可以将数组转换为Set,然后再将Set转换回数组,实现数组的去重。方法可以根据指定的条件筛选数组中的元素,并返回一个新的数组。利用这个特性,我们可以通过遍历数组,将重复的元素过滤掉,从而实现数组的去重。上述代码中,我们先将数组转换为Set数据结构,然后再通过扩展运算符将Set转回数组,得到去重后的数组。方法可以根据指定的条件筛选数组中的元素,并返回一个新的数组。我们可以利用这个特性来实现数组的去重。 阅读详情

相关推荐

基于任务的功能磁共振成像的连接性分析

虽然这种方法通过减少偶然只选择特异性代表的可能性来改善可推广性,但类别内和类别间的变异性变得更难控制(例如,"鸟类"可能是一个比"车辆"更加/不那么同质的类别),并且可能会出现关于这些预定义类别是否是现实世界实体的有意义划分的担忧——尽管这个限制在某种程度上可以通过表征相似性分析来解决。特别是,海马单变量激活和语义认知区域(左下额回)中语义信息的表征强度之间的交互预测了项目的概念记忆,而海马单变量激活和视觉处理区域(腹内侧枕叶皮层)中视觉属性的表征强度之间的交互预测了图像样本的知觉记忆。

cc1609130201的博客 2231

Array.filter()的使用

Array.filter()可用于筛选数组中的某些元素。其主要原理是 filter会把传入的函数依次作用于每个元素,然后根据返回值是 true 还是false决定保留还是丢弃该元素,其返回值为一个数组 const arr = [1, 6, 9, 10, 100, 25]; const result = arr.filter(function (item) { if (item % 2 == 0) { return true; } else { return false; } })

weixin_52272786的博客 9898

避开这些坑!QMT多因子策略实盘中的5个常见错误及解决方案

本文深入剖析了在QMT平台上实施多因子策略时常见的5个错误,包括因子过拟合、数据延迟处理不当、因子失效、交易成本低估和风险控制缺失,并提供了实用的解决方案。通过优化因子筛选、数据对齐和动态管理,帮助量化交易者提升策略稳健性和实盘表现。

k5l6m的博客 238

arr.filter()

一、arr.filter()1、创建新数组2、不改变原数组3、输出的是判断为true的数组元素形成的新数组4、回调函数参数,item(数组元素)、index(序列)、arr(数组本身)5、使用return操作输出,会循环数组每一项,并在回调函数中操作示例:var arr = [1,2,3,4,5] ;var newArr = arr.filter(function(item,index){ re...

YingDaoMonkey的博客 6573

LTspice基础教程-028.Timestep too small

Q: “Timestep too small” error message A: If the LTspice program can’t find a solution for the guessed time step, then the program decreases the time step and tries again. This can’t work forever. If...

gaoyong_wang的博客 2万+

无监督学习初探:K-Means聚类与主成分分析(PCA)

K-Means适用于快速分组,但对数据分布敏感,可结合轮廓系数评估质量。PCA通过特征值分解实现线性降维,需注意非线性场景的替代方案(如UMAP)。进阶方向:聚类:谱聚类、高斯混合模型(GMM)处理复杂形状。降维:t-SNE、自编码器处理非线性结构。

weixin_69882801的博客 1454

js数组高阶函数——filter()方法

⭐一般来说,filter() 方法用于过滤数组中的元素,并返回一个新数组。返回值:返回一个新数组,其中包含符合条件的元素。以下会举5个例子,看懂例子,基本就掌握了。

weixin_52493208的博客 1467

SO_KEEPALIVE、TCP_KEEPIDLE、TCP_KEEPINTVL、保活包

是一个套接字选项,用于设置是否启用 keepalive 机制。在这段代码中没有涉及到选项的设置。当被设置为非零值时,表示启用 keepalive 机制。keepalive 是一种用于检测连接是否仍然有效的机制。通过定期发送一些特定的探测数据,可以检测到网络连接的异常中断或对端应用程序的崩溃退出。为了避免以上情况,可以启用 keepalive 机制,即使在无数据传输的情况下也定期发送探测数据。如果在一定时间内没有收到对端的响应,就认为连接已经失效,并进行相应的处理。要启用选项,需要使用函数。其中,fd。

m0_46376834的博客 4817

Javascript中关于Array.filter()的妙用详解

强烈推荐30个原生JavaScript的demo,包括canvas时钟特效、自定义视频播放器、搜索栏快速匹配、fetch访问资源、console调试技巧等,先fork后学习,详见点击打开链接,欢迎点赞~~~谢谢,共同进步学习! 前言 和map类似,Array的filter也接收一个函数。但是和map不同的是, filter把传入的函数依次作用于每个元素,然后根据返回值是 true 还是fals...

祥哥的说 3万+

基于YOLOv8的人群聚集检测系统:含UI界面设计与数据集应用

人群聚集检测是智慧城市、公共安全和疫情防控等领域的重要任务。本文结合YOLOv8最新目标检测技术,设计并实现了一个高效的人群聚集检测系统,支持可视化UI界面操作,方便用户实时检测和分析视频中的人群密度。本文详细介绍了系统设计思路、使用的数据集、YOLOv8模型训练和推理过程,以及UI界面的开发与整合。最后通过实验验证了该系统的实用性和性能表现。更灵活的模型架构强化的特征融合网络(PAN++)自动混合精度训练支持支持多任务学习(目标检测+分类+分割)预训练模型丰富,适应多种应用场景。

YOLO 434

2026年佰维存储数字IC笔试试卷带答案

建立时间是有效时钟沿到来前,输入数据必须稳定保持的最短时间。保持时间是有效时钟沿到来后,输入数据必须继续稳定保持的最短时间。

Open 103

filter() 方法介绍

方法是 JavaScript 中用于数组处理的高阶函数之一,它用于创建一个新数组,包含所有通过提供的回调函数测试的元素。它不会修改原数组,而是返回一个新数组。通俗理解就是(filter方法就是的。它会,然后让你,符合条件的元素就留下,不符合的就被过滤掉,最后返回一个新的数组。。

apple_70049717的博客 1660

[ vulhub漏洞复现篇 ] ActiveMQ反序列化漏洞复现(CVE-2015-5254)

Apache ActiveMQ是美国阿帕奇(Apache)软件基金会所研发的一套开源的消息中间件,它支持Java消息服务、集群、Spring Framework等。由于ActiveMQ是一个纯Java程序,因此只需要操作系统支持Java虚拟机,ActiveMQ便可执行。Apache ActiveMQ 5.13.0之前5.x版本中存在安全漏洞,该漏洞源于程序没有限制可在代理中序列化的类。......

qq_51577576的博客 4444

JavaScript中Array数组的map()函数的详解

前言 开发中,经常会用到js的Array数组的各种迭代函数map(),filter(),some(),every(),forEach(),find() findIndex(),也是在ES6中新增一些遍历函数。同样是不是也是一道面试题,说说ES6新增的一些新特性???? ✍开始正文map()函数 ✍一、对map()函数的定义: map():通过指定函数处理数组中的每一个元素,并返回一个处理...

能先森的博客 9619

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

前端:JS实现数组去重常用的六种方法介绍

今天给大家分享JS实现数组去重常用的六种方法,希望对大家能有所帮助!定义变量let arr = [20,6,13,20,100,8,13,11]; let newArr = []; 1、...

IT技术分享社区 717

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

【JavaScript 进阶教程】数组新增遍历方法的说明与使用

欢迎来到JavaScript 进阶的学习,ES5 对 JS 的数组,字符串等内置对象的方法均有扩充。这篇文章我们要掌握的是新增的几个 Array 内置对象的常用迭代(遍历)方法,分别是 forEach(),filter(),some(),every()等,这些新方法可以让我们更方便地操作数组。.........

weixin_52212950的博客 2124

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

JS Array数组对象的方法总结(ES5 与 ES6)

JS Array对象的方法总结(ES5 与 ES6) ES5 数组方法 1.Array.isArray() 方法用来判断一个值是否为数组。它可以弥补typeof运算符的不足 2.valueOf() 方法返回数组本身 3.toString() 方法返回数组的字符串形式 4.push() 方法用于在数组的末端添加一个或多个元素,并返回添加新元素后的数组长度。注意,该方法会改变原数组。 5.pop() 方法用于删除数组的最后一个元素,并返回该元素。注意,该方法会改变原数组。 6.join() 方法

听见涛声 353

es6删除数组某项_超级详细的 js数组方法详解

❝ 数组是 js 中最常用到的数据集合,其内置的方法有很多,熟练掌握这些方法,可以有效的提高我们的工作效率,同时对我们的代码质量也是有很大影响。 ❞一、创建数组1.使用数组字面量表示法var arr4 = []; //创建一个空数组 var arr5 = [20]; // 创建一个包含1项数据为20的数组 var arr6 = ["lily","lucy","Tom"]; // 创建一...

weixin_33274728的博客 950

js数组操作方法

创建一个数组: var a = Array(); // [] var a = Array(3); // [undefined,undefined,undefined]//此处3识别为数组的长度 var a = Array(3,11,8); // [ 3,11,8 ] ES6 Array.of() 返回由所有参数值组成的数组 定义:返回由所有参数值组成的数组,如果没有参数,就返回一个空数组。 目...

冰封大海 200

数组常用方法(es4、es5、es6)

数组方法: 一、es4中 1.sort()数组排序可以没有参数使用:将数组中所有的元素都看作字符型数据来进行排序 var num=[10,5,4,0,29,91,52,73,1]; console.log(num); num.sort(function(a,b){ return a-b; }) //将num数组的元素按照数值关系升序排列 console.log(num); //[0,1,4,5,10,29,52,73,91]; 2.reverse()数组翻转 var x=[10...

shiqianhui1124的博客 260

数组方法(es4、es5、es6)

数组方法(es4、es5、es6) 目录 数组方法(es4、es5、es6) js中数组常用的方法: es4中常用方法 es5中常用方法 es6中常用方法 js中数组常用的方法: es4中常用方法 1,sort()数组排序可以没有参数使用:将数组中所有的元素都看作字符型数据来进行排序。 var num=[10,5,4,0,29,91,52,73,1]; console.log(num); num.sort(function(a,b){ return a-b; }) //将num..

kamianlaidaa的博客 720

JavaScript数组方法,常用方法集合,ES5之前、ES5新增、ES6新增

JavaScript数组方法,常用方法集合,ES5之前、ES5新增、ES6新增

baidu_38953088的博客 819

Array 数组的常用方法(含es6)

数组的创建方法 字面量和构造器创建 // 字面量方式: 这个方法也是我们最常用的,在初始化数组的时候 相当方便 let a1 = []; // [] // 构造器: 实际上 new Array === Array,加不加new 一点影响都没有。 let a2 = Array(); // [] let a3 = new Array(3); // [empty * 3] ES6 Array.of() 返回由所有参数值组成的数组 定义:返回由所有参数值组成的数组,如果没有参数,就返回一个空数组。 目的:Arr

qq_58689048的博客 2026

数组常用的方法(es4,es5,es6)

1.什么是数组 存储一组关联数据 2.数组定义方式 1.数组直接变量(常用) var arr = [] ; var arr2 = [10,20,30]; 2.也可以通过new来创建 var arr3 = new Array(); var arr4 = new Array(10,20,30) console.log(arr4) // [ 10, 20, 30 ] 3.数组访问 数组名[下标(索引)] 索引0 1 2 3.... 数组的长度可以通过数组名.length访问 ...

qwerwjs的博客 244

数组常用方法 (ES4、ES5、ES6以及ES7)

把数组转换为字符串 1)JavaScript 方法 toString()把数组转换为数组值(逗号分隔)的字符串。 实例: <!DOCTYPE html> <html> <body> <h1>JavaScript 数组方法</h1> <h2>toString()</h2> <p id="demo"></p> <script> var fruits = ["Banana", "Ora

朵拉多的博客 1075
上一篇: JavaScript ES6 Array.from方法总结
下一篇: JavaScript数组去重各种方法,看谁最快
不见浅诗~
博客等级 码龄7年 506粉丝 129原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值