代码
function removeRepater(array) { array = array || []; var a = {}; for (var i = 0; i < array.length; i++) { var v = array[i]; if (a[v] == undefined) { a[v] = 1; } } array.length = 0; for (var i in a) { array[array.length] = i; } return array; } var num = new Array(); function createArray() { for (var i = 0; i < 1000000; i++) { num[i] = i; } } //创建测试数据 console.profile("create"); createArray(); console.profileEnd("create"); //去重复 console.profile("cal"); var n = removeRepater(num); console.profileEnd("cal");
100万条数据所用时间
分析
1.构造一个哈希对象var a = {};如果a[v]为undefined,则说明该数不存在,把这个数字存为a的属性值,如果存在则不存。
2.For in 中的i为数组的元素或对象的属性,因此可以据此获取a对象的属性(也就是不重复的数字)。
3.console.profile("create")和console.profileEnd("create")可以用在火狐中,查看效率。