使用js里面的迭代器filter实现数组去重
实现数组去重的方法很多,最原始的方法是一个值一个值的去遍历,写到空数组里面:
let r=[],arr = ['a', 'b', 'c', 'a'];
for(var i=0,len=arr.length;i<len;i++){
if(r.indexOf(arr[i])===-1){
r.push(arr[i]);
}
}
或者是在es6里面的.map方法,
但是今天要讲的是迭代器filter,用习惯了迭代器,你可以发现它真的可以取代for循环干许多的事情,而且代码简洁,
filter的定义:
filter():对数组中的每一项运行给定函数。返回该函数会返回true的项组成的数组。
代码如下:
arr = ['a', 'b', 'c', 'a'];
let arr2=arr.filter((item,index,self)=>{return self.indexOf(item) == index;});
console.log(arr2);
更少的代码达到了相同的效果
使用js里面的迭代器filter实现数组去重的更多相关文章
- js array.filter实例(数组去重)
语法: 循环对数组中的元素调用callback函数, 如果返回true 保留,如果返回false 过滤掉, 返回新数组,老数组不变 var new_array = source_array.filt ...
- 【 js 算法类】这么全的数组去重,你怕不怕?
以 var arr = [1,2,3,1]; 作为测试用例 方法一:双循环 (时间复杂度比较高,性能一般.) A.(1) function unique(arr) { var newArr = [ ...
- JS对以对象组成的数组去重
这是从https://segmentfault.com/q/1010000006954351参考的,达到了我要去重的功能!!! var hash = {};//arr是要去重的对象数组 arr = a ...
- JS:利用for循环进行数组去重
<script> var a = [1, 3, 2, 4, 5, 3, 2, 1, 4, 6, 7, 7, 6, 6]; //示例数组 var b = []; for(var i = ...
- 数组filter()参数详解,巧用filter()数组去重
数组方法挺多,但是用来用去可能也就foreach,splice以及slice接触较多,filter()说实话之前也没过多了解.其实filter()为数组提供过滤功能,它会遍历数组所有元素,并返回满足条 ...
- JS的数据类型判断函数、数组对象结构处理、日期转换函数,浏览器类型判断函数合集
工具地址:https://github.com/BothEyes1993/bes-jstools bes-jstools 100多个基础常用JS函数和各种数据转换处理集合大全,此工具包是在 outil ...
- js面试题之数组去重对比
最近看一些面试题,很多都提到了数组去重,用的最多的不外乎就是下面这个例子 arr.filter(function(value,index,arr){ return arr.indexOf(value, ...
- js数组去重方法分析与总结
数组去重经常被人拿来说事,虽然在工作中不常用,但他能够很好的考察js基础知识掌握的深度和广度,下面从js的不同阶段总结一下去重的方法. ES3阶段 该阶段主要通过循环遍历数组从而达到去重的目的 多次循 ...
- JS实现数组去重方法大总结
js数组根据对象中的元素去重: var arr2 = [ { name: "name1", num: "1" }, { name: "name2&qu ...
随机推荐
- Linux-软件包管理-yum在线安装rz、sz工具
yum search lrzsz yum方式查询 rpm -q lrzsz rpm方式查询 yum -y install lrzsz 安装 rpm -q lrzsz rpm方式查询 sz下载 rz上传
- SDL视频显示进阶
原文地址:http://blog.csdn.net/qingkongyeyue/article/details/53024467 1.SDL中事件和线程(函数同时运行) 2.练习 (1)创建线程 第一 ...
- C#:数据库操作(待补充)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...
- log4cplus基础知识
一.简介: log4cplus是C++编写的开源的日志系统. 具有线程安全.灵活.以及多粒度控制的特点,通过将信息划分优先级使其可以面向程序调试.运行.测试.和维护等全生命周期: 你可以选择将信息输出 ...
- Scrapy见面第五天
这算是我第一次使用框架吧,说来羞愧. 此前用Request带上cookie实现.(略微)完好了QQ空间的爬虫(传送门),接下来想实现分布式去爬. 事实上仅仅要能实现待爬QQ队列的共享,分布式的主要问题 ...
- ffmpeg command
1. 列出当前系统的设备列表 ffmpeg -list_devices true -f dshow -i dummy 2. 列出设备Integrated Camera的信息 ffmpeg -list_ ...
- Winform 关闭Form而不销毁Form的内存
在winform程序中有的时候需要暂时关闭窗口并在需要的时候再次调出原来关闭的这个窗口(即关闭的时候不销毁该窗口的内存)实现方法如下: Form.Designer.cs中有如下方法 /// <s ...
- AESDK报错AEGP Magic Error的解决
原因是要先释放了流,再释放流的值,顺序问题导致报错. 解决方法是先释放流的值,再释放流 mSuites->StreamSuite2()->AEGP_DisposeStreamValue(v ...
- 如何隐藏你的 Linux 的命令行历史
如果你是 Linux 命令行的用户,有的时候你可能不希望某些命令记录在你的命令行历史中.原因可能很多,例如,你在公司担任某个职位,你有一些不希望被其它人滥用的特权.亦或者有些特别重要的命令,你不希望在 ...
- python 使用pyinstaller,pywin32打包.py成.exe应用程序
想将编写的Python代码在别人的电脑上运行,由于没有配置python的环境,这就有了困难.搜索学习了下,借助一定的工具可以将python程序的.py文件打包为exe文件,当然有多种方法,本文介绍的方 ...