js去重
利用indexOf判断数组
function unique1(arr){ var temArr = []; for(var i = 0;i < arr.length;i++){ if(temArr.indexOf(arr[i]) == -1){ //未在temArr中找到arr[i] temArr.push(arr[i]); } } return temArr; }
function unique2(arr){ var temArr = []; for(var i = 0;i < temArr.length;i++){ if(arr.indexOf(arr[i])== i){ //查找arr中第i个元素的位置是i的元素 temArr.push(arr[i]); } } return temArr; } var a1 = ['1','2','1','3','2']; console.log(unique2(a1));
利用set函数
function noRepeate(arr){ return Array.from(new Set(arr)); //Array.from将Set、Map、Array对象和类数组对象转换为数组 } var a = ['1','2','1']; console.log(noRepeate(a));
先排序后比较
(比较原数组第i个元素和结果数组的最后一个元素的值)
function unique3(arr){ var newArr = arr.sort(); var res = [newArr[0]]; for(var i = 1;i < newArr.length;i++){ if(newArr[i] !== res[res.length - 1]){ res.push(newArr[i]); } } return res; } var array = ['1','2','2','3','1']; console.log(unique3(array));
Array.prototype.unique4 = function(){ this.sort(); var res = [this[0]]; for(var i = 1;i < this.length;i++){ if(this[i] !== res[res.length - 1]){ res.push(this[i]); } } return res; } var arr = ['1','2','2','3','1']; console.log(arr.unique4());
遍历数组法
(检测到重复值时终止当前循环,跳入上层循环)
function unique5(array){ var r = []; for(var i = 0,l = array.length;i < l;i++){ for(var j = i+1;j < l;j++){ if(array[i] === array[j]){ j = ++i; } } r.push(array[i]); console.log(i); } return r; } var arr = ['1','1','2','2','3','3','1']; console.log(unique5(arr));