方法一:
两层for循环遍历:
第一次遍历数组中的每一个元素 arr[i]
第二层遍历数组当前元素后的所有元素 arr[j],与当前元素相比较,若 == 当前元素,则删除arr[j],并将循环回退一步(删除元素后,会发生变化)
function unique(arr) {
for (var i = 0; i < arr.length; i++) {
for (var j = i + 1; j < arr.length; j++) {
if (arr[i] === arr[j]) {
arr.splice(j, 1);
j--;
}
}
}
return arr;
}
console.log(unique([1, 1, 1, 2, 2, 3, 3]));
方法二:
准备一个新空数组,将需要去重的数组进行遍历,判断新数组中是否有当前元素,若没有,这push到新数组中
function unique(arr) {
var newArr = [];
for (var i = 0; i < arr.length; i++) {
if (newArr.indexOf(arr[i]) === -1) {
newArr.push(arr[i]);
}
}
return newArr;
}
console.log(unique([1, 1, 1, 2, 2, 3, 3]));
方法三:
利用ES标准中的新类型Set
Set类型的对象:是值不能重复的集合
像Set类型对象中添加新值时,如果Set中没有这个值才能添加进入,如果Set中已经有这个值,则不再添加
Array.from()方法
[…set]也可以
function unique(arr) {
var set = new Set(arr);
//方法1:
return Array.from(set);
//方法2:把set打散放进去
var newArr=[...set];
return newArr;
}
console.log(unique([1, 1, 1, 2, 2, 3, 3]));
版权声明:本文为Janicecat原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。