數組 去除重複元素 的三種方法
方法一:
兩層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
*/