以下代码中,参数a代表需要去重的数组。
1. ES6极简版
[... new Set(a)]
2. 无序数组去重(没有排序的步骤)
function uniquify(a) {
var i = 1;
while(i < a.length) {
a.slice(0, i).indexOf(a[i]) >= 0 ? a.splice(i, 1) : i++;
}
return a;
}
3. 有序数组去重(数组经过排序)
function uniquify(a) {
var i = 1;
a.sort(function(a, b) { return a - b; });
while(i < a.length) {
a[i] === a[i - 1] ? a.splice(i, 1) : i++;
}
return a;
}
4. 有序数组去重(数组经过排序,减少了删除操作次数,从而优化了时间复杂度)
function uniquify(a) {
a.sort(function(a, b) { return a - b; });
var i = 0, j = 0;
while(++j < a.length) {
if(a[i] !== a[j]) {
a[++i] = a[j];
}
}
a.length = Math.min(i + 1, a.length);
return a;
}