/**
* 数组去重方法思路
*方法 1:新建一个数组,将原数组第一个元素放入,
*然后从原数组第二个元素开始与新数组内元素比较,相同则放弃,不同则加入新数组
*/
Array.prototype.unique1 = function() {
var aRes = [this[0]];
var flag = false;
for (var i = 1; i < this.length; i++) {
for (var j = 0; j < aRes.length; j++) {
if (this[i] == aRes[j]) {
flag = true;
break;
} else {
flag = false;
}
}
if (!flag) {
aRes.push(this[i]);
}
}
return aRes;
};
var arr = [1, 3, 2, 1, 3, 4, 4, 6];
console.log(arr.unique1());// [1, 3, 2, 4, 6]
/**
* 方法2:先给原数组排序,新建一个数组,将排序后的原数组第一个元素赋值给新数组
* 原数组第二个元素开始与新数组的最后一位比较,不同则添加。
* 对于要求原数组元素顺序不变的情况不适用。
*/
Array.prototype.unique2 = function() {
this.sort();
var aRes = [this[0]];
for (var i = 1; i < this.length; i++) {
if (this[i] !== aRes[aRes.length - 1]) {
aRes.push(this[i]);
}
}
return aRes;
}
var arr = [1, 3, 2, 1, 3, 4, 4, 6];
console.log(arr.unique2());// [1, 3, 2, 4, 6]
/**
* 方法3:定义一个新数组,一个新对象,for循环时,每次取出一个元素与对象进行对比,
* 如果这个元素不重复,则把它存放到结果数组中,同时把这个元素的内容作为对象的一个属性。
*/
Array.prototype.unique3 = function() {
var aRes = [];
var oTemp = {};
for (var i = 0; i < this.length; i++) {
if (!oTemp[this[i]]) {
aRes.push(this[i]);
oTemp[this[i]] = 1;
}
}
return aRes
}
var arr = [1, 3, 2, 1, 3, 4, 4, 6];
console.log(arr.unique3());// [1, 3, 2, 4, 6]
JavaScript数组去重
最新推荐文章于 2024-05-17 18:03:51 发布