ES5:
① 双层循环 比对元素(通过比对元素,存取到空数组的方式)
Array.prototype.deduplication = function(){
var result = [],
len = this.length
for (var i = 0; i < len; i++) {
// 查找不重复元素,如果重复就跳过, 也就是跟当前i元素比对,一样就跳过i(++i),(注意这俩循环是一个数组奥,也就是数据一样),外层存i位置元素。最后返回新数组
for (var j = i+1; j < len; j++) {
if (this[i] === this[j]) { // 如果相同
j = ++i // 跳过当前i位置,并把新的i 位置赋给j.
}
}
result[result.length] = this[i]
}
return result
}
var arr1 = [1, 9, 8, 5, 9, 6, 5, 1]
var arr2 = arr1.deduplication()
console.log(arr2) // [ 8, 9, 6, 5, 1 ]
② 利用对象属性不重复原理,把数组元素(单一元素的一维数组)作为对象key,判断对象key 存不存在来存储元素
Array.prototype.deduplication = function () {
var o = {},
i,
len = this.length
result = [];
for (i = 0; i < len; i ++) {
if (!o[this[i]]) {
o[this[i]] = 1
result[result.length] = this[i]
}
}
return result;
}
var arr1 = [1, 9, 8, 5, 9, 6, 5, 1]
var arr2 = arr1.deduplication()
console.log(arr2) // [ 8, 9, 6, 5, 1 ]
③ es6数组去重, 利用Set集合,
网友评论