javascript去除数组中重复的对象

ssssss

 

代码如下:

<!DOCTYPE html>  
<html>  
<head lang="en">  
    <meta charset="UTF-8">  
    <title></title>      
</head>  
<body>  
    <script>  
        var a = [{ x: 10, y: 20, z: 30 }, { x: 10, y: 20, z: 30 }, { x: 50, y: 60, z: 60 }, { x: 10, y: 20, z: 30 }, { x: 20, y: 20, z: 30 }];
        console.log(a);
        function unique(arr) {
            var res = [arr[0]];
            for (var i = 0; i < arr.length; i++) {
                var repeat = false;
                for (let j = 0; j < res.length; j++) {
                    if (isObjectValueEqual(arr[i], res[j])) {
                        repeat = true;
                        break;
                    }
                }
                if (!repeat) {
                    res.push(arr[i]);
                }
            }
            return res;
        }
        b = unique(a);
        console.log(b);
        var c = [];
        for (var i = 0; i < b.length; i++) {
            c.push(b[i].x);
            c.push(b[i].y);
            c.push(b[i].z);
        }
        console.log(c);
        //判断两对象是否相等
        function isObjectValueEqual(a, b) {
            var aProps = Object.getOwnPropertyNames(a);
            var bProps = Object.getOwnPropertyNames(b);
            if (aProps.length != bProps.length) {
                return false;
            }
            for (var i = 0; i < aProps.length; i++) {
                var propName = aProps[i];
                if (a[propName] !== b[propName]) {
                    return false;
                }
            }
            return true;
        }
    </script>  
</body>  
</html>  

结果

(5) [{…}, {…}, {…}, {…}, {…}]
0:{x: 10, y: 20, z: 30}
1:{x: 10, y: 20, z: 30}
2:{x: 50, y: 60, z: 60}
3:{x: 10, y: 20, z: 30}
4:{x: 20, y: 20, z: 30}


(3) [{…}, {…}, {…}]
0: {x: 10, y: 20, z: 30}
1: {x: 50, y: 60, z: 60}
2: {x: 20, y: 20, z: 30}


(9) [10, 20, 30, 50, 60, 60, 20, 20, 30]

 

posted @ 2018-04-11 12:20  stone_ye  阅读(405)  评论(0)    收藏  举报