1.使用ES6中的Set方法
<script>
function unique(arr){
return Array.from(new Set(arr));
}
var arr=[1,2,3,1,4,5,2];
console.log(unique(arr));
</script>
2.使用上层for循环,使用slice方法
function unique(arr){
for(let i=0;i<arr.length;i++){
for(let j=i+1;j<arr.length;j++){
if(arr[i]==arr[j]){
arr.splice(j,1);
j--;
}
}
}
return arr;
}
var arr=[1,2,3,1,4,5,2];
console.log(unique(arr));
3.使用indexOf
var newArr=[];
function unique(arr){
for(let i=0;i<arr.length;i++){
if(newArr.indexOf(arr[i])==-1){
newArr.push(arr[i]);
}
}
return newArr;
}
var arr=[1,2,3,1,4,5,2];
console.log(unique(arr));
4.先用sort方法对数组进行排序,再对比前后
var arr=[1,2,3,1,4,5,2];
arr = arr.sort();
var newArr = [arr[0]];
function unique(arr){
for(let i=1;i<arr.length;i++){
if(arr[i]!=arr[i-1]){
newArr.push(arr[i]);
}
}
return newArr;
}
console.log(unique(arr));
5.利用对象属性不能重复的特性对数组去重
function unique(arr) {
if(!Array.isArray(arr)) {
return 'type error';
}
let temp = {},
newArr = [],
len = arr.length;
for( let i = 0;i< len; i++) {
if(!temp[arr[i]]) {
temp[arr[i]] = 'aa';
newArr.push(arr[i]);
}
}
return newArr;
}
var arr=[1,2,3,1,4,5,2];
console.log(unique(arr));
6.reduce方法
function unique(arr){
if(!Array.isArray(arr)) {
return 'type error';
}
let newArr = arr.reduce((pre, cur) => {
if(!pre.includes(cur)) {
return pre.concat(cur)
} else {
return pre
}
}, [])
return newArr;
}
var arr=[1,2,3,1,4,5,2];
console.log(unique(arr));