JavaScript 数组去重
方法:在原型链上编写,利用对象的属性不能相同的特点进行去重,把数组的属性值添加为对象的属性名(一个对象不能有两个同名的属性)。
代码实现:
// 在原型链封装一个方法
Array.prototype.unique = function () {
var temp = [], // 空数组
obj = {}, // 空对象
len = this.length; // 定义一个变量接收调用数组的length值。(作用:减少循环运算)
// 循环遍历数组
for(var i = 0; i < len; i ++) {
// 判断对象里面有没有这个属性,值取反,为true执行代码块,为false跳过,执行下一次循环,去除重复。
if(!obj[this[i]]) {
// 把数组属性值添加为对象属性名,并给对象属性名赋值(注:对象属性不要为0或this[i])
obj[this[i]] = "Hello World!!!";
// 在temp里面添加数据
temp.push(this[i]);
}
}
return temp; // 返回这个数组
};
调用这个方法:
用一个超级数组去测试
var newArr = [1, 2, 3, 5, 3, 1, 5, 6, 7, 4, 1, 1, 2, 3, 5, 3, 1, 5, 6, 7, 4, 1, 1, 2, 3, 5, 3, 1,
6, 7, 4, 1, 1, 2, 3, 5, 3, 1, 5, 6, 7, 4, 1, 1, 2, 3, 5, 3, 1, 5, 6, 7, 4, 1, 1, 2, 3, 5, 3, 1, 5,
6, 7, 4, 8, "a", "b", "c", "b", "a", "c", "a", "b", "a", "b", "c", "b", "a", "c", "c", "a", "b",
"c","b", "a", "c", "c", "a", "b"]
Array.prototype.unique = function () {
var temp = {};
var arr = [];
var len = this.length
for(var i = 0; i < len; i ++) {
if(!temp[this[i]]) {
temp[this[i]] = "abc";
arr.push(this[i]);
}
}
return arr;
}
console.log(newArr.unique());
结果为:
去重前:
去重后:
以上就是小编对javascript数组去重问题的研究,今后会不断改进代码。