基本方法
-思路:创建一个新数组,遍历原数组,喏遍历的元素在新数组不存在就添加到数组中,反之则忽略
function unArray(arr){
var res = [];
for(var i = 0; i< arr.length ; i++ ){
var repeat = false;
for(var k = 0 ; k < res.length; k++ ){
if(arr[i] === res[j] ){
repeat = true;
break;
}
}
if(!repeat){
res.push(arr[i]);
}
}
return res
}
先排序再去重
-思路:先对数组排序,再定义一个新的数组,变量排序后的数组,喏排序后的数组元素不等于新数组的最后一个元素,则添加。
function unArray(arr) {
function sortNumber(a,b) {
return a-b;
}
var newArr = arr.sort(sortNumber);
var res = [];
for (var i = 0 ; i < newArr.length ; i++){
if (newArr[i] !== res[res.length-1 ]){
res.push(newArr[i]);
}
}
return res;
}
对象去重
-思路:利用对象的属性,遍历数组,喏数组元素不是对象的属性,则添加
function unArray(arr) {
var res = [];
var temp = {};
for (var i = 0 ; i < arr.length; i++){
if (!temp[arr[i]]){
res.push(arr[i]);
temp[arr[i]] = 1;
}
}
return res;
}
filter or indexOf 方法
-思路:通过filter筛选出去重后的数组,喏indexOf方法在该元素之后再查不到该元素的位置,表示该元素不存在,符合要求。
function unArray(arr) {
return arr.filter(function (item,index,array) {
return array.indexOf(item, index+1) === -1;
})
}
ES6 Set
-思路:利用ES6中的Set不包含重复元素的思想,为数组创建Set对象,再将对象转换为数组
function unArray(arr) {
return Array.from(new Set(arr))
}