实现简单的数组去重?

基础数据结构数组:
 [...new Set([...])]或Array.from(new Set(array))(set返回的结构不是数组类型)
对象数组类型数组:

方法一:

// 定义常量 res,值为一个Map对象实例
const res = new Map();
//返回arr数组过滤后的结果,结果为一个数组
//过滤条件是,如果res中没有某个键,就设置这个键的值为1
return arr.filter((a) => !res.has(a) && res.set(a, 1))

方法二:

//  方法2:利用reduce方法遍历数组,reduce第一个参数是遍历需要执行的函数,第二个            参数是item的初始值33
var obj = {};
arr = arr.reduce(function(item, next) {
    obj[next.key] ? '' : obj[next.key] = true && item.push(next);
    return item;
}, []);

原文地址:https://www.cnblogs.com/qianyy/p/12081653.html

时间: 2024-11-05 16:53:39

实现简单的数组去重?的相关文章

js分享一段简单的数组去重的方法

Array.prototype.filter.call(["sdf",32,52,52,"sdf"],function(v,i,arr){ return arr.indexOf(v)===i;}) //来自 http://www.tuicool.com/articles/y6neiu

使用JavaScript进行数组去重——一种高效的算法

最近比较忙,没时间更新博客,等忙完这阵子会整理一篇使用AngularJS构建一个中型的单页面应用(SPA)的文章,尽情期待!先占个坑. 数组去重的算法有很多种,以下是一种. 思路如下: 定义一个空的对象obj: 循环数组arr,判断obj[arr[i]]是否为false,如果是则将该数组元素放到result中,并且将obj[arr[i]]置为true: obj[arr[0]]肯定为false,因为obj为空,arr[0]将被放到result中,并且obj[arr[0]]被置为true: 循环的过

JS实现数组去重

1.遍历数组法 它是最简单的数组去重方法(indexOf方法) 实现思路:新建一个数组,遍历去要重的数组,当值不在新数组的时候(indexOf为-1)就加入该新数组中: var arr=[2,8,5,0,5,2,6,7,2]; function unique1(arr){ var hash=[]; for (var i = 0; i < arr.length; i++) { if(hash.indexOf(arr[i])==-1){ hash.push(arr[i]); } } return h

数组去重的几个方法

1.遍历数组法 它是最简单的数组去重方法(indexOf方法) 实现思路:新建一个数组,遍历去要重的数组,当值不在新数组的时候(indexOf为-1)就加入该新数组中: var arr=[2,8,5,0,5,2,6,7,2];function unique1(arr){ var hash=[]; for (var i = 0; i < arr.length; i++) { if(hash.indexOf(arr[i])==-1){ hash.push(arr[i]); } } return ha

Set以及数组去重

特点 Set本身是一个构造函数,用来生成Set数据结构 Set 类似于数组,里面的成员都是==唯一==的,没有重复的值,通过add方法向Set结构加入成员 向Set加入值的时候,不会发生类型转换,Set内部判断两个值是否不同,使用的算法叫做"Same-value-zero equality",类似于===,主要的区别是NaN等于自身,而===认为NaN不等于自身. 在Set内部,两个NaN是==相等==的 两个对象总是==不相等==的 Set实例的属性和方法 1. 属性 Set.pro

ES6 set和map数据结构对对象数组去重简单实现

自从有了es6的set数据结构,数组的去重可以简单用一行代码实现,比如下面的方式 let arr = [1, 2, 2, 3, 4] function unique (arr) { return [...new Set(arr)] } console.log(unique(arr)) // [1, 2, 3, 4] 但是当数组的项不再是简单的数据类型时,比如是对象时,这种方法就会导致错误,比如下面的结果 let arr = [ { name: 'a', num: 1}, { name: 'b',

一个数组去重的简单栗子

数组去重方法有多中,这里列举出自己认为比较容易理解的方法. 思路: 创建一个新的空数组,用来存放去重后的新数组. 利用for循环循环遍历需要去重的数组. 利用indexOf()方法查询遍历出的数组在新数组中是否出现,如果出现:则继续遍历数组,如未出现:则利用push方法添加到新数组中. 原数组循环遍历完成后,组建一个已经去除重复的新数组. <script> var arr = [1,3,4,5,6,7,4,3,2,4,5,6,7,3,2]; function removeRepeatArr()

javaScript数组去重方法

在JAvascript平时项目开发中经常会用到数组去重的操作.这时候就要用到JS数组去重的方法了. demo1: 第一种:JS数组去重操作方法是利用遍历原数组,利用数组的indexOf()方法来来判断新数组b中是否有原数组a中的元素,如果没有的话则在b数组的后面追加上a[i],如果有的话就不执行任何操作,最后可以达到数组去重的操作. 这种方法应该是平时开发中最常用的JS数组去重的方法了,简单又实用. demo2: 第二种去重的方法比较巧妙,是定义一个空对象和一个空数组,在遍历原数组的时候来用原数

JavaScript 数组去重

JavaScript 数组去重 Why underscore (觉得这部分眼熟的可以直接跳到下一段了...) 最近开始看 underscore.js 源码,并将 underscore.js 源码解读 放在了我的 2016 计划中. 阅读一些著名框架类库的源码,就好像和一个个大师对话,你会学到很多.为什么是 underscore?最主要的原因是 underscore 简短精悍(约 1.5k 行),封装了 100 多个有用的方法,耦合度低,非常适合逐个方法阅读,适合楼主这样的 JavaScript