一.前言

去重在我们的开发过程中经常遇到,避免重复元素的添加,我们需要对获取到的集合(包括List、Array等)

做相关的过滤操作。确保对象的唯一性,从而达到保证数据不冗余重复。由于自己是做.net方面的开发,所以就拿C#

语言中常用的去重方式来学习。如果有其他更好的方式,希望各位大牛指出来,自己也学习学习,在此十分感谢!

二.C#一般性去重

        static void Main(string[] args)
{ //1.集合的定义
List<int> listArr = new List<int> { , , , , , };
List<int> listArrCompare = new List<int> { , , , , };
var num1 = "";
var num2 = "";
var num3 = ""; //2.集合的操作
listArr.AddRange(listArrCompare); //将listArr和listArrCompare合并 List<int> resultList = listArr.Union(listArrCompare).ToList<int>(); //剔除重复项
List<int> ResultSameList = listArr.Concat(listArrCompare).ToList<int>(); //保留重复项
foreach (var item1 in listArr)
{
num1 = num1 + "," + item1.ToString(); }
foreach (var item2 in resultList)
{
num2 = num2 + "," + item2.ToString(); }
foreach (var item3 in ResultSameList)
{ num3 = num3 + "," + item3.ToString(); }
Console.WriteLine(num1);
Console.WriteLine(num2);
Console.WriteLine(num3);
Console.ReadKey(); }

结果:

c#中还有很多去重的方案,在这里说到了最基础的,对于Dictionary、HashTable、HashSet等都可以利用到去重的方法。

HashSet<T>的Add方法返回bool值,在添加数据时,如果发现集合中已经存在,则忽略这次操作,并返回false值。

而Hashtable和Dictionary<TKey,TValue>碰到重复添加的情况会直接抛出错误。

三.c#采用for循环遍历对比去重

           //一个集合内部的集合去重,采用循环比较
var temp = "";
List<int> lstall = new List<int> { , , , , , , , , };
for (int i = ; i < lstall.Count - ; i++)
{
for (int j = lstall.Count - ; j > i; j--)
{
if (lstall[i] == lstall[j])
{
lstall.RemoveAt(j);
}
}
} foreach (var item in lstall)
{
temp += item.ToString() + ",";
}
Console.WriteLine(temp);
Console.ReadKey();

结果:

四.Distinct去重

            //利用distinct去重
List<String> strSameList = new List<String>();
strSameList.Add("武汉");
strSameList.Add("武汉");
strSameList.Add("上海");
strSameList.Add("上海");
strSameList.Add("南京");
strSameList.Add("南京");
strSameList.Add("帝都");
strSameList.Add("石家庄");
String myList = String.Empty;
IEnumerable<String> distinctList = strSameList.Distinct();
foreach (String str in distinctList)
{
myList += str + " ,";
}
Console.WriteLine(myList);
Console.ReadKey();

结果:

五.Javascript中去重

Javascript中我们经常遇到数组去重的情况,那我们一般采取什么样的方式了?

通过学习以及网上一些资料,自己将一些方法总结如下:

5.1第一种方法:

通过定义Array对象原型的方法,那么数组都可以调用该方法对本身重复的元素Drop。

因Array原型上的方法对于不同的Array对象时共享的。

 Array.prototype.DropRepeat= function (){
var oldArr=this;
var oldLen=oldArr.length;
var newArr=[oldArr[]]; if(!oldLen)
{
 return this;
} for(var i=;i<oldLen;i++)
{
newArr.indexOf(oldArr[i])<?newArr.push(oldArr[i]):'';
}
return newArr; }; var testArr=['','','','',''];
console.log(testArr.DropRepeat());

在chrome下测试的结果为:

5.2第二种方法就是直接函数实现:

       function DropRepeat(arr){
// 遍历arr,把元素分别放入tmp数组(不存在才放)
var tmp = new Array();
for(var i=;i<arr.length;i++){
//该元素在tmp内部不存在才允许追加
if(tmp.indexOf(arr[i])==-){
tmp.push(arr[i]);
}
}
return tmp;
}
var testArr=[,,,,,];
DropRepeat(testArr);

结果:

5.3第三种方法就是利用了一个键值的方法,反转键值以后,因为键值不能重复,所以就自动过滤掉了重复的元素。

 function DropRepeat(arr)
{
var reverseArr1=new Array();
for(var item in arr){
reverseArr1[arr[item]]=;
}
var reverseArr2=new Array();
for(var item in reverseArr1){ reverseArr2.push(item);
}
return reverseArr2;
} var testArr=[,,,,,,];
DropRepeat(testArr);

测试结果:

本人菜鸟,希望各位大牛给出指导,不当之处虚心接受学习!谢谢!

c#和Javascript中去重总结的更多相关文章

  1. Javascript中的数组去重-indexof方法

    在Javascript中,有时我们会用到数组去重.我在这里给大家介绍一下本人认为最简单实用的一种方法-indexOf()去重. var arr = [1,1,1,2,2,2,3,3,4,5,6,2,1 ...

  2. 总结Javascript中数组各种去重的方法

    相信大家都知道网上关于Javascript中数组去重的方法很多,这篇文章给大家总结Javascript中数组各种去重的方法,相信本文对大家学习和使用Javascript具有一定的参考借鉴价值,有需要的 ...

  3. JavaScript中数组去重的几种方法

    JavaScript中数组去重的几种方法 正常情况下,数据去重的工作一般都是由后端同事来完成的,但是前端也要掌握好处理数据的能力,万一去重的工作交给我们大前端处理,我们也不能怂呀.现在我总结了一些去重 ...

  4. Javascript中数组的基本操作

    删除数组指定的某个元素 via首先可以给JS的数组对象定义一个函数,用于查找指定的元素在数组中的位置,即索引,代码为: Array.prototype.indexOf = function(val) ...

  5. 也谈面试必备问题之 JavaScript 数组去重

    Why underscore (觉得这部分眼熟的可以直接跳到下一段了...) 最近开始看 underscore.js 源码,并将 underscore.js 源码解读 放在了我的 2016 计划中. ...

  6. javascript中关于数组的一些鄙视题

    一.判断一个数组中是否有相同的元素 /* * 判断数组中是否有相同的元素的代码 */ // 方案一 function isRepeat1(arrs) { if(arrs.length > 0) ...

  7. 详解Javascript中的Array对象

    基础介绍 创建数组 和Object对象一样,创建Array也有2种方式:构造函数.字面量法. 构造函数创建 使用构造函数的方式可以通过new关键字来声明,如下所示: 12 var arr = new ...

  8. javascript数组去重算法-----3

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. 关于JavaScript中的事件代理

    今天面试某家公司Web前端开发岗位,前面的问题回答的都还算凑活,并且又问了一下昨天面试时做的一道数组去重问题的解题思路(关于数组去重问题,可以观赏我前几天写的:http://www.cnblogs.c ...

随机推荐

  1. Hbuilder开发HTML5 APP之图标和启动页制作

    1.点击项目下的"manifest.json"文件,会出现自动化的配置工具: 2.点“图标配置“,上传制作好的图标文件,自动生成不同大小的ico,这个要赞下! 3.启动图片(spl ...

  2. Webix JavaScript UI 库可以帮你构建跨平台的HTML5 和 CSS3 程序

    XB 软件公司最近发布了JavaScript UI 库Webix ,其中包含的组件超过45个,用这些组件可以构建跟HTML5 和 CSS3 兼容的程序,这些程序不仅能在个人电脑上运行,还能用在iOS. ...

  3. ENode 2.6 架构与设计简介以及全新案例分享

    前言 ENode是一个应用开发框架,为开发人员提供了一整套基于DDD+CQRS+ES+EDA架构风格的解决方案.ENode从发布1.0开始到现在的差不多两年时间,我几乎每周都在更新设计或实现代码.以至 ...

  4. 你必须知道的指针基础-7.void指针与函数指针

    一.不能动的“地址”—void指针 1.1 void指针初探 void *表示一个“不知道类型”的指针,也就不知道从这个指针地址开始多少字节为一个数据.和用int表示指针异曲同工,只是更明确是“指针” ...

  5. 图片拾取器-PicPicker

    最近报名参加了360前端星计划,想当一名前端实习生,学习更多更流行的前端知识.然后需要完成一个作业,才能进培训,进了培训还得看运气才能留下,流程不少.书归正传,请看: 课后作业题目 请从下面两个题目中 ...

  6. MySQL 子分区

    200 ? "200px" : this.width)!important;} --> 介绍 子分区其实是对每个分区表的每个分区进行再次分隔,目前只有RANGE和LIST分区 ...

  7. Please Call Me NIO

    与其他语言相比,Java的IO功能显得异常复杂,各种流操作,通过程序员多次封装才可以达到操作文件的目的.自从jdk1.4之后,java提供了一个新的api完成IO操作,人称New IO(NIO),使用 ...

  8. sublime text2 安装less2css插件

    之前一直用PhpStorm,功能十分强大,各种插件也有,不过比较占内存,有时候,左边的项目列表都刷不出来,今天又出现了这个问题,于是果断换sublime了. 由于项目中要用less编译,所以得装个le ...

  9. 东哥读书小记 之 《MacTalk人生元编程》

         一直以来的自我感觉:自己是个记性偏弱的人.反正从小读书就喜欢做笔记(可自己的字写得巨丑无比,尼玛不科学呀),抄书这事儿真的就常发生俺的身上. 因为那时经常要背诵课文之类,反正为了怕自己忘记, ...

  10. Node.js Base64 Encoding和Decoding

    如何在Node.js中encode一个字符串呢?是否也像在PHP中使用base64_encode()一样简单? 在Node.js中有许多encoding字符串的方法,而不用像在JavaScript中那 ...