数组 去除重复元素 的三种方法
方法一:
两层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]));
console.log("去除数组中的元素方式一")
var arrs = [1,2,1,3,2,4,5,5,6,7];
for (var i = 0; i < arrs.length; i++) {
for (var j = i + 1; j < arrs.length; j++) {
if (arrs[i] === arrs[j]) {
arrs.splice(j, 1);
j--;
}
}
}
console.log(arrs)
方法二:
准备一个新空数组,将需要去重的数组进行遍历,判断新数组中是否有当前元素,若没有,这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]));
方式四去重复方式
const arr = [1, 2, 1, 3, 2, 2, 4, 5, 5, 6, 7]
// 获取数组中的元素
// for(let i=0; i<arr.length; i++){
// const index = arr.indexOf(arr[i], i+1)
// if(index !== -1){
// // 出现重复内容
// arr.splice(index, 1)
// i--
// }
// }
// console.log(arr)
const newArr = []
for(let ele of arr){
if(newArr.indexOf(ele) === -1){
newArr.push(ele)
}
}
console.log(newArr)
/*
有一个数组:
[9,1,3,2,8,0,5,7,6,4]
编写代码对数组进行排序 --> 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
*/