javascript数组去重函数


模样如下:

Array.prototype.delrep = function(fun) {
        if(!fun) {
            fun = function(d) {return d;};
        }
        var newArr = [];
        this.sort(function(a, b) {
            return fun(a) > fun(b) ? -1 : 1;
        });
        newArr.push(this[0]);
        this.forEach(function(d) {
            if(fun(d) != fun(newArr[0])) {
                newArr.unshift(d);
            }
        });
        return newArr;
    };

1,对于基本类型数组:

[1,2,3,4,5,5,6,6,5].delrep();//输出[1, 2, 3, 4, 5, 6]

2,对于对象数组:

var data = [
        {
            name: "aaa",
            value: 123
        },
        {
            name: "bbb",
            value: 234
        },
        {
            name: "aaa",
            value: 789
        }
    ];
console.log(data2.delrep(function(d) {return d.name;}));
//输出[
        {
            name: "bbb",
            value: 234
        },
        {
            name: "aaa",
            value: 789
        }
    ];

自己写的供大家当工具函数使用,可能会比冒泡排序那种去重要快一些。
其中一点说明的是对于对象数组,参数是一个函数,这个函数返回用来去重的属性。

希望我的文章能帮助到你,更多资料请翻阅d3js.org,
我是朱现明,任职于精硕科技可视化部门前端开发,更多精彩的文章即将奉上.

zhuxianming@admaster.com.cn


发表评论

电子邮件地址不会被公开。

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>