JS实现数组去重及数组内对象去重功能示例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
</body>
<script>
    //去重
    var newarr = [];
    // var arr = this.msg;
    var arr = [{
        name: 1,
        ccc: 2
    }, {
        name: 2
    }, {
        name: 2
    }, {
        name: 3
    }, {
        name: 3
    }, {
        name: 4
    }, {
        name: 151
    }, {
        name: 1
    }, ];
    //Es6 + ES5去重办法
    function duplicate(arr, type) {
        if (arr.length == 0) {
            return arr;
        } else {
            if (type) {
                var obj = {}
                    //利用ES6  reduce 累加方法
                var newArr = arr.reduce((cur, next) => {
      //name是对象键的  名字 保持同步
                    obj[next.name] ? "" : obj[next.name] = true && cur.push(next);
                    return cur;
                }, [])
                return newArr;
            } else {
                return Array.from(new Set(arr));
            }
        }
    }




    //ES5原生去重办法
    function duplicate2(arr, type) {
        var newArr = [];
        var tArr = [];
        if (arr.length == 0) {
            return arr;
        } else {
            if (type) {
                for (var i = 0; i < arr.length; i++) {
                    if (!tArr[arr[i][type]]) {
                        newArr.push(arr[i]);
                        tArr[arr[i][type]] = true;
                    }
                }
                return newArr;
            } else {
                for (var i = 0; i < arr.length; i++) {
                    if (!tArr[arr[i]]) {
                        newArr.push(arr[i]);
                        tArr[arr[i]] = true;
                    }
                }
                return newArr;
            }
        }
    }
    console.log('ES5去重', duplicate2(arr, "name"));



    console.log('ES6去重', duplicate(arr, "name"));
</script>
</html>
原文地址:https://www.cnblogs.com/shenbo666/p/13667461.html