1、通过遍历原数组和新数组是否重复。new一个新数组存放已经遍历过的、唯一的元素。
function uniqueArr(list){ var newArr= [list[0]]; for(var i=1;i<list.length;i++){ var isRepeat = false; for(var j=0;j<newArr.length;j++){ if(list[i] == newArr[j]){ isRepeat= true; break; } } if(!isRepeat){ newArr.push(list[i]); } } return newArr; } var arr=['a','b','c','a','b']; uniqueArr(arr); //output:["a", "b", "c"]2、通过先排序,再与相邻的元素进行比较去重(排序之后相同的元素会相邻)
function uniqueArr(list){ list.sort();//对数组进行排序 var newArr= []; for(var i=1;i<list.length;i++){ if(list[i]!=list[i+1]) newArr.push(list[i]); } return newArr; } var arr=['a','b','c','a','b']; uniqueArr(arr); //output:["a", "b", "c"]3、新建一个对象进行存放,再遍历数组,判断对象是否存在该值(obj[i])
function uniqueArr(list){ var obj= {},newArr=[list[0]]; obj[list[0]]=true; for(var i=1;i<list.length;i++){ if(!obj[list[i]]){ obj[list[i]]=true; newArr.push(list[i]); } } return newArr; } var arr=['a','b','c','a','b']; uniqueArr(arr); //output:["a", "b", "c"]4、通过indexOf进行判断(新建一个数据存放唯一的元素,遍历原数组判断(newArr.indexOf(oldArr[i])==-1))
function uniqueArr(list){ var newArr=[list[0]]; for(var i=1;i<list.length;i++){ if(newArr.indexOf(list[i])==-1){ newArr.push(list[i]); } } return newArr; } var arr=['a','b','c','a','b']; uniqueArr(arr); //output:["a", "b", "c"]5、使用ES6 SET数据结构进行去重:
function dedupe(array) { return Array.from(new Set(array)); } dedupe([1, 1, 2, 3]) // [1, 2, 3]
转载于:https://www.cnblogs.com/ducky-L/p/7266383.html