数组去重的方法总结

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>数组去重的 3种方法</title>
</head>
<body>

    <script type="text/javascript">
        var demoAr = [3,4,5,5,7,2,1,4,3]; 

        // 方法一:遍历数组,建立新数组,利用indexOf判断是否存在于新数组中,不存在则push到新数组,最后返回新数组
        function unique1(ar){
            var newAr = [];
            for( var i=0; i<ar.length; i++ ){
                if( newAr.indexOf(ar[i]) === -1 ){
                    newAr.push(ar[i]);
                }
            }
            return newAr;
        }

        // 方法二:遍历数组,利用object对象保存数组值,判断数组值是否已经保存在object中,未保存则push到新数组并用object[arrayItem]=1的方式记录保存
        function unique2(ar){
            var newAr = [];
            var obj = {};

            for(var i=0, j=ar.length; i<j; i++){
                if( !obj[ar[i]] ){
                    obj[ar[i]] = 1;
                    // console.log(obj);
                    newAr.push(ar[i]);
                }
            }
            return newAr;
        }

        // 方法三:数组下标判断法, 遍历数组,利用indexOf判断元素的值是否与当前索引相等,如相等则加入
        function unique3(ar){
            var newAr = [];
            ar.forEach(function(item, index, array){
                if( ar.indexOf(item) === index ){
                    newAr.push(item);
                };
            });
            return newAr;
        }

        // 方法四:数组先排序, 然后比较俩数组一头一尾进行去重 (优点:效率高  缺点:会改变数组原有顺序)
        function unique4(ar){
            var newAr = [],
                end;
            ar.sort();
            end = ar[0];
            newAr.push(ar[0]);
            for( var i=1; i<ar.length; i++ ){
                if(ar[i]!=end){
                    newAr.push( ar[i] );
                    end = ar[i];
                }
            }

            return newAr;
        }
        console.log( unique1(demoAr) );
        // console.log( unique2(demoAr) );
        // console.log( unique3(demoAr) );
        // console.log( unique4(demoAr) );

</script>

</body>
</html>

参考自:http://www.cnblogs.com/leonwang/p/4845576.html

时间: 2024-10-07 06:13:07

数组去重的方法总结的相关文章

js 数组去重的方法总结

想沉淀一下自己.代码改变世界~~~ 1.利用Array.from代码如下 1 var arr = [1,2,3,4,3,2,1] 2 function unique(arr){ 3 return Array.from(new Set(arr)) 4 } 5 console.log(unique(arr)) 2.利用es6(...)拓展运算符.demo 1 var arr = [1,2,3,4,3,2,1] 2 function unique(arr){ 3 return [...new Set(

js数组去重的方法

1.如果不借助任何方法,初级写法应该是: function unique(arr){ var res=[]; for(var i=0,len=arr.length;i<len;i++){ var obj = arr[i]; for(var j=0,jlen = res.length;j<jlen;j++){ if(res[j]===obj) break; } if(jlen===j)res.push(obj); } return res; } var arr=[1,1,'2','1',3,4]

5个数组去重的方法

1.遍历数组法 最简单的去重方法:新建一新数组,遍历传入数组,值不在新数组就加入该新数组中:注意点:判断值是否在数组的方法“indexOf”是ECMAScript5 方法,IE8以下不支持,需多写一些兼容低版本浏览器代码 function unique1(array){ var n = []; for(var i = 0; i < array.length; i++){ //如果当前数组的第i已经保存进了临时数组,那么跳过,否则把当前项push到临时数组里面 if (n.indexOf(arra

几种数组去重的方法

<script type="text/javascript">window.onload=function(){ /*数组去重方法一*//*var arr=[1,1,2,545,5,15,156,1,5,15]; var arr1=[]; for(var i=0;i<arr.length;i++){ if(arr1.indexOf(arr[i])==-1){ arr1.push(arr[i]); }; }; alert(arr1); */ /*数组去重方法二*//*

indexof实现数组去重的方法,有三个版本,一个Js版本,2个augular版本

先上Js的简化版本的数组去重,需要M层控制数据 大妈 1 var aa = [1,3,4,5,6,23,523,6,123,'1',12,'刘','刘','刘','翔',12,123,214,'1','3','刘翔','刘翔']; 2 3 function arr(arr){ 4 var result = []; 5 for (var i=0;i<arr.length;i++) { 6 if (result.indexOf(arr[i]) == -1) { 7 result.push(arr[i

Javascript中的数组去重-indexof方法

在Javascript中,有时我们会用到数组去重.我在这里给大家介绍一下本人认为最简单实用的一种方法-indexOf()去重. 1 var arr = [1,1,1,2,2,2,3,3,4,5,6,2,1]; 2 var arr2 = []; 3 for(var i = 0;i < arr.length;i++){ 4 if(arr2.indexOf(arr[i]) == -1){ 5 arr2.push(arr[i]) 6 } 7 } 8 console.log(arr2) //[1,2,3,

数组去重--ES6方法

数组去重方法1:用es6的set和...扩展运算符 let arr = [1,2,3,4,4,5,2]; console.log([...new Set(arr)]) // [1, 2, 3, 4, 5] ES6 提供了新的数据结构 Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. Set 本身是一个构造函数,用来生成 Set 数据结构. const s = new Set(); [2, 3, 5, 4, 5, 2, 2].forEach(x => s.add(x)); for (l

JS数组去重 ES6 方法

let arr = [0, 0, 0, 0, 1, 2, 3, 4, 4, 5, 2, 3, 3, 3, 9, 8, 9]; //数组去重法1 console.log(Array.from(new Set(arr))); //数组去重法2 console.log(...new Set(arr)); //数组去重法3 let newarr = []; for (var i = 0; i < arr.length; i++) { if (newarr.indexOf(arr[i]) == -1) {

数组去重的方法

思路一: 双层循环,外层循环元素,内层循环时比较值 如果有相同的值则跳过,不相同则push进数组 Array.prototype.distinct = function(){ var arr = this, result = [], i, j, len = arr.length; for(i = 0; i < len-1; i++){ for(j = i + 1; j < len; j++){ if(arr[i] === arr[j]){ j = ++i; } } result.push(ar