Js中数组去重的几种方法
一、利用ES6中的 Set 方法去重
注:Set为ES6新增的一个对象,允许存储任何类型(原始值或引用值)的唯一值
let arr = [1,0,0,2,9,8,3,1]; function unique(arr) { return Array.from(new Set(arr)) } console.log(unique(arr)); // [1,0,2,9,8,3] or6 console.log(...new Set(arr)); // [1,0,2,9,8,3]
二、使用双重for循环,再利用数组的splice方法去重(ES5常用)
var arr = [1, 5, 6, 0, 7, 3, 0, 5, 9,5,5]; function unique(arr) { for (var i = 0, len = arr.length; i < len; i++) { for (var j = i + 1, len = arr.length; j < len; j++) { if (arr[i] === arr[j]) { arr.splice(j, 1); j--; // 每删除一个数j的值就减1 len--; // j值减小时len也要相应减1(减少循环次数,节省性能) // console.log(j,len) } } } return arr; } console.log(unique(arr)); // 1, 5, 6, 0, 7, 3, 9
三、利用数组的indexOf方法去重
注:array.indexOf(item,statt) 返回数组中某个指定的元素的位置,没有则返回-1
var arr =[1,-5,-4,0,-4,7,7,3]; function unique(arr){ var arr1 = []; // 新建一个数组来存放arr中的值 for(var i=0,len=arr.length;i<len;i++){ if(arr1.indexOf(arr[i]) === -1){ arr1.push(arr[i]); } } return arr1; } console.log(unique(arr)); // 1, -5, -4, 0, 7, 3

浙公网安备 33010602011771号