数组去重是一个常见的面试问题,也有很多种实现方式,我今天要介绍两种时间复杂度为O(n)的方法:
利用Object:
我们可以利用Object的key独一无二这个特点来进行数组去重。
function jsUnique(array) {
let myObject = {};
for (let i = 0; i < array.length; i++) {
if (myObject[array[i]]) {
continue;
} else {
myObject[array[i]] = true;
}
}
return Object.keys(myObject).map(item => Number(item));
}
是不是简洁明了。但是注意一个容易忽略的地方,如果最后直接return Object.keys(myObject), 返回的数组中全是字符串。。。
利用Set
es6出来之后,新增的数据结构Set简直强大,利用“Set 中的元素是唯一的”这一特点,轻松实现数组去重。
function jsUnique2(array) {
return Array.from(new Set(array));
}
简直不能更简单有没有!