Fork me on GitHub

js-数组去重的方法

在js中我们想对数组中对于数字重复的值进行操作只显示一个,就分享几个方法

1、数组的indexOf()方法

<script>
    (function () {
        var box = document.getElementById('box');
        var arr = [1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7];
        norepeat(arr);

        function norepeat(arr) {
            var arr1 = [];//声明一个空数组来存放去重之后的数组
            arr1 = arr.filter(function (item) {
                if (arr1.indexOf(item) == -1) {
                    return arr1.push(item);
                }
            })
            console.log(arr1);
        }
    })();
</script>

2、用数组includes()方法(比indexOf()方便)

function norepeat2(arr) {
        //arr是要去重的数组
        var newarr = [];//准备用来存放去重之后的数据
        arr.forEach(function (item) {
            if (!newarr.includes(item)) {//1 2 1 2 3 4
                //不包含
                newarr.push(item);//1 2 3 4
            }
        });
        return newarr;
    }

3、利用对象

    声明一个空对象来,遍历数组判断对象是否有当前值,有就跳过,无就执行判断语句将值作为属性名存入对象

function norepeat3(arr) {
        var obj = {
            // 1 : true,
            // 2 : true,
            // 3 : true,
            // 4 : true
        };//开关
        arr.forEach(function (item) {//
            if (!obj[item]) {//obj.1 obj.2 obj.1 obj.2 obj.3
                obj[item] = true;//对象的赋值  item就是作为键名;true作为键值
            }
        });
        var newarr = [];
        for (var key in obj) {
            //遍历对象
            newarr.push(key * 1);
        }
        console.log(obj);
        return newarr;
    }

 

posted @ 2019-08-23 11:26  幽幽木云  阅读(221)  评论(0编辑  收藏  举报