精华内容
下载资源
问答
  • 今天学习一下数组去重几种方法,虽然不全但是实用 方法一: <script> let arr=[1,2,3,5,4,8,8,4,8,8,2,2] function chuanru(arr){ let newarr=[]; for(var i=0;i<arr.length;i++){ if(newarr.index...

    今天学习一下数组去重的几种方法,虽然不全但是实用
    方法一:

     <script>
           let arr=[1,2,3,5,4,8,8,4,8,8,2,2]
           function chuanru(arr){
               let newarr=[];
               for(var i=0;i<arr.length;i++){
                   if(newarr.indexOf(arr[i])===-1){
                       newarr.push(arr[i]);
                   }
               }
               return newarr;
           }
           console.log(chuanru(arr));
        </script>
    

    使用了push与indexOf进行去重
    push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。

    indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。
    如果没有找到匹配的字符串则返回 -1
    原理
    在便利数组后,如果判断其没有相匹配的数值,则将其添加到新数组中
    方法二:

     <script>
             let arr=[1,2,3,5,4,8,8,4,8,8,2,2]
             function chuanru(arr){
                 return arr.filter((item,index)=>{
                     return arr.indexOf(item)===index
                 })
             }
             console.log(chuanru(arr));
        </script>
    

    使用了filter与indexOf去重
    filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
    filter() 不会对空数组进行检测。
    filter() 不会改变原始数组。
    indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。
    如果没有找到匹配的字符串则返回 -1
    原理
    运用filter方法直接过滤掉重复的数值.,
    方法三:

    <script>
              let arr=[1,2,3,5,4,8,8,4,8,8,2,2]
              function chuanru(arr){
                  for(var i=0;i<arr.length;i++){
                      for(var j=i+1;j<arr.length;j++){
                          if(arr[i]===arr[j]){
                              arr.splice(j,1);
                              j--;
                          }                                                                                                                                                                                                                                                           
                      }
                  }
                  return arr
              }
              console.log(chuanru(arr));
        </script>
    

    这是双层for循环加上splice去重
    splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。
    原理
    在写第二层for循环时一定要带上,上一个参数加1,别写成了j=1。在下面判断时当arr[i]与arr[j]相等,则将arr数组中后面一个相同值删除掉,最终得到全部不一样值得数组。一定要记得j–,因为splice会改变数组长度。
    方法四:

    <script>
              let arr=[1,2,3,5,4,8,8,4,2,2]
              function chuanru(arr){
                  let newarr=[]
                  for(var i=0;i<arr.length;i++){
                      for(var j=i+1;j<arr.length;j++){
                          if(arr[i]===arr[j]){
                              i++;
                              j=i;
                          }
                      }
                      newarr.push(arr[i])
                  }
                  return newarr
              }
              console.log(chuanru(arr));
        </script>
    

    这是使用双层for循环加上push进行去重
    push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。
    原理
    这个方法其原理是在执行第二层for循环时,判断arr[i]与arr[j]的值如果arr[i]与arr[j]相等时就会跳过接下来的循环,重新执行第一层循环,除非判断其与后面的都不相等,才将其添加到新数组中。

    展开全文
  • 数组去重几种方法

    2021-11-12 13:46:53
    数组去重几种方法 TODO 1、方法 let ar = [1, 2, 3, 4, 3, 3, 2, 4, 5] 1、Array.from(new Set(ar)) 2、[...new Set(ar)]

    数组去重几种方法

    let  ar = [1, 2, 3, 4, 3, 3, 2, 4, 5]
    

    es6方法

    Array.from(new Set(ar))
    [...new Set(ar)]
    

    遍历

    function removeSame (ar) {
    	let obj = {}, arr = []
    	for (let i =0; i<ar.length; i++) {
    		if (!obj[ar[i]]) {
    			arr.push(ar[i])
    			obj[ar[i]] = true
    		}
    	}
    	return arr
    }
    
    function removeSame (ar) {
    	let arr = []
    	for (let i = 0; i < ar.length; i++ ) {
    		if (arr.indexOf(ar[i]) === -1) {
    			arr.push(ar[i])
    		}
    	}
    	return arr
    }
    
    function removeSame (ar) {
    	let arr = ar.filter((element, index, self) => {
    		return selef.indexOf(element) === index
    	})
    	return arr
    }
    

    数组对象去重

    let ar = [
    	{ id: 1, name: '张三' },
    	{ id: 2, name: '李四' },
    	{ id: 1, name: '王五' }
    ]
    
    let obj = {}
    ar.reduce((cur, next) => {
    	obj[next.id] ? '' : obj[next.id] = true && cur.push(next)
    	return cur
    },[])
    
    展开全文
  • JavaScript中数组去重几种方法正常情况下,数据去重的工作一般都是由后端同事来完成的,但是前端也要掌握好处理数据的能力,万一去重的工作交给我们大前端处理,我们也不能怂呀。现在我总结了一些去重的方法,希望...

    JavaScript中数组去重的几种方法

    正常情况下,数据去重的工作一般都是由后端同事来完成的,但是前端也要掌握好处理数据的能力,万一去重的工作交给我们大前端处理,我们也不能怂呀。现在我总结了一些去重的方法,希望对大家有点帮助。

    方法一:new Set()实现数组去重

    ES6 提供了新的数据结构 Set,它类似于数组,但是成员的值都是唯一的,没有重复的值。 Set 本身是一个构造函数,用来生成 Set 数据结构。Set函数可以接受一个数组,用于初始化。根据 Set的数据特性,我们可以实现数组去重。

    let list = [1, 1, 'a', 'a', true, true, false, false, null, '', null, '', undefined, undefined];

    let list1 = Array.from(new Set(list)); // [ 1, "a", true, false, null, "", undefined ]

    let list2 = [...new Set(list)]; // [ 1, "a", true, false, null, "", undefined ]

    方法二:some()+循环去重

    some() 方法用于检测数组中的元素是否满足指定条件(函数提供) 。 如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。 如果没有满足条件的元素,则返回false。 我们可以定义一个新数组来承接没有重复的数据,遍历原始数组的时候,用新数组来判断数据是否已经出现过。

    function distinct(list) {

    let result = [list[0]];// 用于承接没有重复的数据,初始时将原始数组的第一个值赋给它。

    for (let i = 1; i < list.length; i++) {

    // 判断结果数组中是否存在一样的值,若果没有的话则将数据存入结果数组中。

    if (!(result.some(val => list[i] === val))) {

    result.push(list[i]);

    }

    }

    return result;

    }

    let arr = [1, 1, 'a', 'a', true, true, false, false, null, '', null, '', undefined, undefined];

    distinct(arr); // [ 1, "a", true, false, null, "", undefined ]

    方法三:双重for循环去重

    双重for循环,第一层循环确保数组中的每一项都能被比较,第二层循环确保被比较项后的每一项都能跟被比较项比较。

    function distinct2(list) {

    for (let i = 0; i < list.length; i++) {

    for (let j = i + 1; j < list.length; j++) {

    // 后面数据的若跟前一项数据相同,则重复,需要去除。

    if (list[i] === list[j]) {

    list.splice(j, 1); // 去除后面的相同项

    j--;

    }

    }

    }

    return list;

    }

    let arr = [1, 1, 'a', 'a', true, true, false, false, null, '', null, '', undefined, undefined];

    distinct2(arr); // [ 1, "a", true, false, null, "", undefined ]

    方法四:hasOwnProperty()方法去重

    hasOwnProperty() 方法用来检测一个属性是否是对象的自有属性,而不是从原型链继承的。如果该属性是自有属性,那么返回 true,否则返回 false。

    function unique(arr) {

    var obj = {}; // 用来记录数组中的数据

    return arr.filter(function(item, index, arr){

    // 如果记录对象中存在某个数据,则返回false过滤掉;否则obj进行记录并筛选出来

    return obj.hasOwnProperty(typeof item + item) ? false : (obj[typeof item + item] = true)

    })

    }

    let arr = [1,1,'true','true',true,true,15,15,false,false, undefined,undefined, null,null, NaN, NaN,'NaN', 0, 0, 'a', 'a',{},{}];

    unique(arr) // [ 1, "true", true, 15, false, undefined, null, NaN, "NaN", 0, 'a', {}]

    方法五:利用filter()+indexOf()方法去重

    indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。

    function unique(arr) {

    return arr.filter(function(item, index, arr) {

    // 从数组0位开始查,如果当前元素在原始数组中的第一个索引==当前索引值,说明它是第一次出现。

    return arr.indexOf(item, 0) === index;

    });

    }

    let list = [1, 1, 'a', 'a', true, true, false, false, null, '', null, '', undefined, undefined];

    unique(list); // [ 1, "a", true, false, null, "", undefined ]

    此外,数组去重还可以利用filter()、includes()等方法实现,但是思路都跟上面几种方法类似,这里就不一一列举了。

    展开全文
  • 31小时5分钟前回答python redis连接 有序集合去重的实例内容python redis连接 有序集合去重的代码如下所述: # -*- coding: utf-8 -*- import redisfrom constant import redis_ip, redis_db, redis_pw, redis_zset_...

    6579a29335b40c4dc595cea0d58f3d2f.png

    31小时5分钟前回答

    python redis连接 有序集合去重的实例内容

    46fe5d07cf26489d16ed4204dedb12d1.png

    python redis连接 有序集合去重的代码如下所述: # -*- coding: utf-8 -*- import redisfrom constant import redis_ip, redis_db, redis_pw, redis_zset_namepool = redis.ConnectionPool(host=redis_ip, db=redis_db, password=redis_pw)# pool = redis.ConnectionPool(db=6, password=redis_pw)rr = redis.Redis(connection_pool=pool) # # 客户端StrictRedis=Redis 合并了pipe = rr.pipeline(transaction=True) # 批量操作, 遇到异步容易出错, 可以不使用, 直接用 rr 连接对象,一次一个添加def distinct_md5(date, eml_md5, eml_path, redis_fail_path): 用md5标记去重, Redis有序集合去重, Redis版本不一样, 用法有区别 :param date: 排序分数: int :param eml_md5: 文件或者其他md5 :return: 1 添加成功, 没有去重 0 失败, 去重 # pipe.zadd(redis_zset……

    e58e8ba39fa50d9ae0d5d34bac016045.png

    20小时3分钟前回答

    python opencv对目录下图片进行去重的技巧

    46fe5d07cf26489d16ed4204dedb12d1.png

    版本: 平台:ubuntu 14 / I5 / 4G内存 python版本:python2.7 opencv版本:2.13.4 依赖: 如果系统没有python,则需要进行安装 sudo apt-get install python sudo apt-get install python-dev sudo apt-get install python-pip sudo pip install numpy mathplotlib sudo apt-get install libcv-dev sudo apt-get install python-opencv 使用感知哈希算法进行图片去重 原理:对每个文件进行遍历所有进行去重,因此图片越多速度越慢,但是可以节省手动操作 感知哈希原理: 1、需要比较的图片都缩放成8*8大小的灰度图 2、获得每个图片每个像素与平均值的比较,得到指纹 3、根据指纹计算汉明距离 5、如果得出的不同的元素小于5则为相同(相似?)的图片 #!/usr/bin/python# -*- codi……

    944d9ea98462942c203af8cc28592273.png

    2小时21分钟前回答

    实现java8 list按照元素的某个字段去重的方法

    11882ece2236f58bae4055f57ba72cba.png

    list 按照元素的某个字段去重 @Data@AllArgsConstructor@NoArgsConstructorpublic class Student {private Integer age;private String name;} 测试数据 ListStudent studentList = Lists.newArrayList();studentList.add(new Student(28, river));studentList.add(new Student(12, lucy));studentList.add(new Student(33, frank));studentList.add(new Student(33, lucy)); java8 通过tree set 去重 ListStudent studentDistinctList = studentList.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -new TreeSet(Comparator.comparing(t - t.getName()))),ArrayList::new));System.out.println(new Gson().toJson(studentDistinctList)); 扩展distinct 方法去重 ListStudent studentDistinct2List = studentList.stream().filter(StreamUtil.distinctByKey(t-t.getName())).collect(Collectors.toList()……

    945e2cd9d1c61ca3283d7d034ad51027.png

    48小时57分钟前回答

    解决Pandas同元素多列去重问题

    11882ece2236f58bae4055f57ba72cba.png

    有一些问题可能会遇到同元素多列去重问题,下面介绍一种非常简单效率也很快的做法,用pandas来实现。 首先我们看一下数据类型: G1 G2a bb ac dd ce f 对这样的两列数据进行同元素去重,最终得到结果为: G1 G2a bc de f 代码如下: #-*- coding: utf-8 -*-data = {G1:[a,b,c,d,e],G2:[b,a,d,c,f]}data = pd.DataFrame(data)data[G3] = data[G1] + | + data[G2]p = []for i in data[G3].tolist(): tmp = sorted(i.split(|)) # The most important part,sort p.append(tmp[0] + | + tmp[1])data[G3] = pd.Series(p)data = data.drop_duplicates(G3) 以上这篇Pandas 同元素多列去重的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持码农之家。 ……

    bc97c7f86137e4404276f2cd8728b627.png

    26小时30分钟前回答

    Python对多属性的重复数据去重多种方法

    9e431b500d925569181e1c4e29a52b2c.png

    python中的pandas模块中对重复数据去重步骤: 1)利用DataFrame中的duplicated方法返回一个布尔型的Series,显示各行是否有重复行,没有重复行显示为FALSE,有重复行显示为TRUE; 2)再利用DataFrame中的drop_duplicates方法用于返回一个移除了重复行的DataFrame。 注释: 如果duplicated方法和drop_duplicates方法中没有设置参数,则这两个方法默认会判断全部咧,如果在这两个方法中加入了指定的属性名(或者称为列名),例如:frame.drop_duplicates([state]),则指定部分列(state列)进行重复项的判断。 具体实例如下: import pandas as pd data={state:[1,1,2,2],pop:[a,b,c,d]} frame=pd.DataFrame(data) frame pop state 0 a 1 1 b 1 2 c 2 3 d 2 IsDuplicated=frame.duplic……

    2b2067eb92d942fa3ce3b906687b4cda.png

    34小时1分钟前回答

    用bitmap进行字符串去重的实例方法

    9fd2ab06e2eea610e7fa5f4ff3d843f8.png

    bitmap 即为由单个元素为 boolean(0/1, 0 表示未出现,1 表示已经出现过)的数组。 如果C/C++ 没有原生的 boolean 类型,可以用 int 或 char 来作为 bitmap 使用,如果我们要判断某字符(char)是否出现过 使用 int 作为 bitmap 的底层数据结构,bitmap 即为 int 数组,一个 int 长度为 32 个 bit 位, c / 32 bitmap 中的第几个 int c % 32 bitmap 中的某 int 中的第几个 bit 位; 使用 char 作为 bitmap 的底层数据结构,bitmap 即为 char 数组,一个 char 长度为 8 个 bit 位; c / 8 bitmap 中的第几个 char c % 8 bitmap 中某 char 中的第几个 bit 位; ASCII A-Z:65-90 a-z:97-122 如果使用 char 作为 bitmap 的替代底层数据结构,为了实现字符串的去重需要 char 的长……

    0893d4103c6490a946abf4d333e973a7.png

    40小时24分钟前回答

    Java中连续重复字符去重方法

    11882ece2236f58bae4055f57ba72cba.png

    最近参加了一个面试,问到了如何在一个字符串中连续相同字符去重,想了想用正则表达式应该可以轻松实现。可是由于长时间没有编码了,而且由于原先的工作用到的比较少。具体的自己就不会写正则表达式用到的类名什么的了。总之就是面试没有过了。 回来再网上搜了搜,本来以为可以很容易找到相应的内容,可是找了半天没有找到我想要的结果。后来在某个相似问题求助中看到了相应答案,不过还是有所区别,根据该问题的解决思路,最后实现了。 代码如下: public class Test {public static void main(String[] args) {String str = 111111kakkkkkkkkkkwwwaacbbdAAA;String s = ;int count=0;Matcher m = Pattern.compile((\\w)\\1*).matcher(st……

    展开全文
  • 数组去重的5种方法

    2021-03-11 20:49:37
    数组去重的5种方法 第一种:遍历数组法 这种方法最简单最直观,也最容易理解,代码如下: let arr = [2, 8, 5, 0, 5, 2, 6, 7, 2, 6, 8, 9] let newArr = [] for (let i = 0; i < arr.length; i++) { if ...
  • 数组去重的十种方法

    2021-10-05 19:22:01
    数组去重方法,其实无论实在实际项目还是在面试中都会有用到的,下面我们来列举一下常见的个: 使用 for 循环和 includes 使用 Set 和 Array.from() 使用 for 循环和 indexOf for 循环嵌套 for 循环,结合 ...
  • 实现思路:新建一个数组,遍历要去重数组,当值不在新数组的时候(indexOf 为 -1)就加入该新数组中; function unique(arr){ var newArr = []; for(var i = 0; i < arr.length; i++){ if(newArr.indexOf(arr[i...
  • 在日常开发中,经常要处理一下接口数据,数组去重是处理数据的高频操作。 这里简单介绍一些常用的好方法。 一、数组元素是基本数据类型 const arr = [1, 2, 3, 4, 1, 2, 3, 4, 1, 1, 5, 2, 4] 利用ES6的新的数据...
  • 在C语言中,数组属于构造数据类型。...资料:js世界-数组去重到底最快的是谁?RemoveduplicatevaluesfromJSarray[duplicate]大致思路遍历数组的各个项并判断某项是否重复。时间复杂度往往是O(n^2)优化...
  • 今天来聊一聊js数组去重的一些方法,包括一些网上看到的和自己总结的,总共5种方法,希望对大家有帮助。第一种:遍历数组法这种方法最简单最直观,也最容易理解,代码如下:这种方法很好理解,利用了indexOf()方法...
  • 根据我自己的总结归纳,数组去重分为两类型的方法,一是在原来的的数据里面删除重复的元素,另一是把原数组里面相同的元素添加到一个新数组里面。不管是什么方法都是利用这种解决思路去设计的。 一 .删除原...
  • 数组去重几种方法一、for循环判断二、ES6中的Set对象1、一个数组去重2、两个数组合并去重(取合集)三、对象数组去重 一、for循环判断 let a=[1,2,4,2,3,1,2,2] function duplRem(arr) { let b=[]; let flag=...
  • 数组去重几种方法

    2021-04-27 14:02:08
    发现了一篇关于JavaScript数组去重的高性能方法的博客!!! 原文地址: JavaScript 高性能数组去重:https://www.cnblogs.com/wisewrong/p/9642264.html 作者:Wise.Wrong 请大家点击原文地址查看 以下内容均为转载...
  • 一、创建新数组,把原数组中不重复的值存到新数组中 1. 利用indexOf()方法:可返回某个指定的字符串值在字符串中首次出现的位置。 下面看一个简单例子,熟悉一下indexOf() 方法的用法。 let str = 'orange'; str...
  • 前言去重是开发中经常会碰到的一个热点问题,不过目前项目中碰到的情况都是后台接口使用SQL去重,简单高效,基本不会让前端处理去重。那么前端处理去重会出现什么情况呢?假如每页显示10条不同的数据,如果数据重复...
  • 在平常实际使用中,数组去重的使用概率还是蛮高都的,有时候经常需要对一些后台数据进行一些处理,下面介绍几种数组 1,利用indexOf和for循环 首先介绍一种,最简单数组去重法如下: function unique(arr){ //...
  • Js数组对象去重几种方法

    千次阅读 2021-02-02 15:29:10
    arr: [ { id: 1, name: 'a' }, { id: 1, name: 'f' }, { id: 2, name: 'b' }, { id: 3, name: 'c' }, { id: 3, name: 'g' }, { id: 4, name: 'd' }, { id: 5, name: 'e' }, ...方法一:双重for循环 deweight() {
  • JS数组有哪几种定义方式?js 里创建一个数组几种方式有什么区别吗?a = new Array(); b = []; 性能问题吗??function clear(arr) { // 1 如何获取数组中每一个元素出现的次数 var o = {}; // 1.1 记录数组中元素...
  • 在web前端开发过程中避免会遇到很多数组需要处理,经常出现的问题就是数组去重,今天小千就来给大家介绍一下几种常见的数组去重的方式,大家可以学习一下以备不时之需。 数组去重概念:去除数组中重复重新的值 方法...
  • JS数组去重几种常见方法 一、简单的去重方法 // 最简单数组去重法 /* * 新建一新数组,遍历传入数组,值不在新数组就push进该新数组中 * IE8以下不支持数组的indexOf方法 * */ function uniq(array){ var temp = ...
  • 数组(包含对象等类型元素)去重 解决思路 一个数组(包含对象等类型元素)去重函数,需要在基础类型判断相等条件下满足以下条件: 如果元素是数组类型,则需要数组中的每一项相等 如果元素是对象类型,则需要对象...
  • 这里总结了下网上搜集到的几种方法。一、方法1代码如下ids = [1,2,3,3,4,2,3,4,5,6,1]news_ids = []for id in ids:if id not in news_ids:news_ids.append(id)print news_ids思路看起来比较清晰简单 ,也可以保...
  • JS数组去重几种方法

    千次阅读 多人点赞 2021-09-25 21:31:25
    数组去重 1 双层for循环(类似冒泡排序的双层循环写法) var arr = [2,3,4,2,34,21,1,12,3,4,1] for(var i =0;i<arr.length;i++){ //第一层:每次循环拿到arr中一个元素 for(var j=i+1;j<arr.length;j++){ ...
  • 在我们平时开发项目过程中有时候会遇到需要数组去重的场景,虽然说像数组去重这种工作一般都是由后台去处理,很少让前端处理。前端在日常开发项目中用到的概率比较低,但还是需要了解一下,一来可以扩充我们的技术面...
  • 1. 数组去重 利用indexOf 和 push进行 // 数组的去重 var arr4 = [100, 100, 300, 300, 401, 501, 601]; function unique(arr) { var newArr = []; for (var i = 0; i < arr.length; i++) { // 核心思路
  • 针对数组去重,Java实现方式有多种,比如新建数组来存储非重复项,或者在原有基础上删除掉重复的项,也可以利用数据结构Set或ArrayList来达到去重复。以下18种方式都可以实现,但每一种方法都不尽相同,有的很简单,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 26,788
精华内容 10,715
关键字:

数组去重的几种方法