方法很多,在此仅总结常见的几种。
详细可参考:JS数组去重
1.ES6 set()去重
function uniq(array) {
return Array.from(new Set(array))
}
var array = [2, 9, 9, 4, 6, 2];
console.log(uniq(array)); //[2, 9, 4, 6]
2.indexOf与新数组去重
新建一个数组,遍历传入数组,值不在新数组就push到该新数组中
function uniq(array) {
var temp = [];
for (let i = 0; i < array.length; i++) {
if (temp.indexOf(array[i]) == -1) {
temp.push(array[i]);
}
}
return temp;
}
var array = [2, 9, 9, 4, 6, 2];
console.log(uniq(array)); //[2, 9, 4, 6]
3. filter 过滤当前值对应唯一索引
function unique(array) {
return array.filter(function (item, index, array) {
//判断当前的值对应的索引是不是唯一的
return array.indexOf(item, 0) === index;
});
}
var array = [2, 9, 9, 4, 6, 2];
console.log(uniq(array)); //[2, 9, 4, 6]
4. 双循环去重
有点像冒泡排序
function uniq(array) {
// 第一层for用来控制循环的次数
for (var i = 0; i < array.length; i++) {
//第二层for 用于控制与第一层比较的元素
for (var j = i + 1; j < array.length; j++) {
//如果相等
if (array[i] == array[j]) {
//删除后面的 即第 j个位置上的元素 删除个数 1 个
array.splice(j, 1);
// j--很关键的一步 如果删除 程序就会出错
//j--的原因是 每次使用splice删除元素时 返回的是一个新的数组
j--;
}
}
}
return array;
}
var array = [2, 9, 9, 4, 6, 2];
console.log(uniq(array)); //[2, 9, 4, 6]