去掉一个数组中的重复项,并按升序排序
方法1:indexOf()
function removeRepeat(arr){
let result = []
for(var i=0;i<arr.length;i++){
if(result.indexOf(arr[i]) == -1){
result.push(arr[i])
}
}
return result.sort(function(a,b){
return a-b // 升序排列
// return b-a // 降序排列
})
}
var testArr = [2,5,6,11,45,6,9,2]
var resultArr = removeRepeat(testArr)
console.log(resultArr) // [2, 5, 6, 9, 11, 45]
indexOf() 方法可返回数组中某个指定的元素的下标位置。
该方法将从头到尾地检索数组,看它是否含有对应的元素。如果找到一个指定元素,则返回指定元素第一次出现的位置。如果在数组中没找到指定元素则返回 -1。开始位置的索引为 0。
方法2:includes()
function removeRepeat(arr){
let result = []
for(var i=0;i<arr.length;i++){
if(!result.includes(arr[i])){
result.push(arr[i])
}
}
return result.sort(function(a,b){
return a-b // 升序排列
// return b-a // 降序排列
})
}
var testArr = [2,5,6,11,45,6,9,2]
var resultArr = removeRepeat(testArr)
console.log(resultArr)
includes() 方法用来判断一个数组是否包含一个指定的值,如果包含返回 true,否则返回false。
方法3:ES6方法,使用set去重
function removeRepeatBySet(arr){
let result = [...new Set(arr)]
return result.sort(function(a,b){
return a-b // 升序排列
// return b-a // 降序排列
})
}
var testArr = [2,5,6,11,45,6,9,2]
var resultArr = removeRepeatBySet(testArr)
console.log(resultArr)
方法4:
function removeRepeatBySet(arr){
let result = []
var obj = {};
for(var i = 0 ;i< arr.length;i++){
if( !obj[arr[i]] ){
obj[arr[i]] = 1;
result.push(arr[i]);
}
}
return result.sort(function(a,b){
return a-b // 升序排列
// return b-a // 降序排列
})
}
var testArr = [2,5,6,11,45,6,9,2]
var resultArr = removeRepeatBySet(testArr)
console.log(resultArr)
方法5: filter数组过滤
function removeRepeatBySet(arr){
let result = arr.filter(function(item,index,array){
return array.indexOf(item) === index;
});
return result.sort(function(a,b){
return a-b // 升序排列
// return b-a // 降序排列
})
}
var testArr = [2,5,6,11,45,6,9,2]
var resultArr = removeRepeatBySet(testArr)
console.log(resultArr)