几种去除数组中重复元素的方法

工作中遇到的一个问题,就是去除数组中重复的元素,记录一下几种有效的方法:

第一种思路:遍历要删除的数组arr, 把元素分别放入另一个数组tmp中,在判断该元素在arr中不存在才允许放入tmp中。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>去除数组重复项</title>
</head>
<body>
    <script type="text/javascript">
    var color = [‘red‘,‘blue‘,‘green‘,‘pink‘,‘yellow‘,‘blue‘,‘black‘,‘red‘];
    function unique(arr){
        // 遍历arr,把元素分别放入tmp数组(不存在才放)
        var tmp = new Array();
        for(var i in arr){
            //该元素在tmp内部不存在才允许追加
            if(tmp.indexOf(arr[i])==-1){
                tmp.push(arr[i]);
            }
        }
        return tmp;
    }
    var arr = unique(color);
    console.log(arr);
</script>
</body>
</html>

第二种思路是:把目标数组arr的元素值和键的位置调换 自动就把重复的元素给删除掉了,调换后的样子:array(‘red‘=>1,‘blue‘=>1,‘green‘=>1,‘pink‘=>1,‘yellow‘=>1,‘black‘=>1)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>去除数组重复项</title>
</head>
<body>
    <script type="text/javascript">
        var color = [‘red‘,‘blue‘,‘green‘,‘pink‘,‘yellow‘,‘blue‘,‘black‘,‘red‘];
        function unique(arr){
            var tmp = new Array();
            for(var m in arr){
                tmp[arr[m]]=1;
            }
            //再把键和值的位置再次调换
            console.log(tmp);
            var tmparr = new Array();
            for(var n in tmp){
                tmparr.push(n);
            }
            return tmparr;
        }
        var arr = unique(color);
        console.log(arr);
    </script>
</body>
</html>

第三种思路:我们可以 用一个hashtable的结构记录已有的元素,这样就可以避免内层循环。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>去除数组重复项</title>
</head>
<body>
    <script type="text/javascript">
          var color = [‘red‘,‘blue‘,‘green‘,‘pink‘,‘yellow‘,‘blue‘,‘black‘,‘red‘];
          function unique(arr) {
            var result = [], hash = {};
            for (var i = 0, elem; (elem = arr[i]) != null; i++) {
                if (!hash[elem]) {
                    result.push(elem);
                    hash[elem] = true;
                }
            }
            return result;
         }
         var arr = unique(color);
         console.log(arr);
    </script>
</body>
</html>
时间: 2024-10-09 21:05:57

几种去除数组中重复元素的方法的相关文章

去除数组中重复元素

问题 统计一个一维数组中的各个元素的个数,然后删除多出来的重复元素,并输出结果. 例如:[1,2,2,2,3,3,3,3,3]-->[1,2,3] 解决思路 将重复元素的列表中的重复元素进行统计,并将统计结果放在dictionary中,key为元素,value为该元素的个数 然后通过for获取key,得到一个新的列表,就是没有重复元素的列表 解决(Python) #!/usr/bin/env python #coding:utf-8 def count_element(one_list): el

Js中去除数组中重复元素的4种方法

今天工作遇到此问题,尝试多个方法不尽人意,故此写个博客来总结一下如何在js中去除重复元素. 方法1:         Array.prototype.method1 = function(){             var arr[];    //定义一个临时数组             for(var i = 0; i < this.length; i++){    //循环遍历当前数组                 //判断当前数组下标为i的元素是否已经保存到临时数组          

Js中去除数组中重复元素的几种方法

方法1: 1 Array.prototype.method1=function(){ 2 var arr=[]; 3 for(var i=0;i<this.length;i++){ 4 if(arr.indexOf(this[i]) == -1){ 5 arr.push(this[i]); 6 } 7 } 8 return arr; 9 } 方法2: 1 Array.prototype.method2 = function(){ 2 var h{}; //定义一个hash表 3 var arr[

关于iOS去除数组中重复数据的几种方法

关于iOS去除数组中重复数据的几种方法 在工作工程中我们不必要会遇到,在数组中有重复数据的时候,如何去除重复的数据呢? 第一种:利用NSDictionary的AllKeys(AllValues)方法 可以将NSArray中的元素存入一个字典,然后利用AllKeys或者AllValues取得字典的所有键或值,这些键或值都是去重的.代码: NSArray *dataArray = @[@"2014-04-01",@"2014-04-02",@"2014-04-

php去除数组中重复数据

<?php /** * 去除数组中重复数据 * by www.jbxue.com **/ $input = array("a" => "green","", "red","b" => "green", "","blue", "red","c" => "witer",

统计数组中重复元素个数

/** * 循环统计数组或集合中的重复元素个数 * @param args */ public static void main(String[] args) { Map<String, Integer> map = new HashMap<String, Integer>(); String[] ss = {"白","黑","绿","白"}; for (int i = 0; i < ss.len

C语言去除数组中重复的字符简单例子

#include <stdio.h> int main(void){ int a[10]={1,2,3,3,4,5,1,3,5,6}; int i,j; int zieo=0; for(i=0;i<10;i++) for(j=i+1;j<10;j++) { if(a[i]==a[j]) { a[j]=0; } } for(i=0;i<10;i++) { if(a[i]!=zieo) { printf("%d\t",a[i]); } } printf(&qu

PHP实现查询两个数组中不同元素的方法

以下实例讲述了PHP实现查询两个数组中不同元素的方法.分享给大家供大家参考,具体如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 <?php   $a = array(   "max_allow_dialogs",   "livechat_server_ip",   "livechat_servic

iOS去除数组中重复的model数据

// 去除数组中model重复 for (NSInteger i = 0; i < self.selectedModelArray.count; i++) { for (NSInteger j = i+1;j < self.selectedModelArray.count; j++) { AssistantModel *tempModel = self.selectedModelArray[i]; AssistantModel *model = self.selectedModelArray[