js数组去重方法
- for循环嵌套,利用splice去重:此方法是比较常用的方法之一,也是es5中比较实用的方法之一。话不多说,上代码:
function newArr(arr){ for(var i=0;i<arr.length;i++){ for(var j=i+1;j<arr.length;j++){ if(arr[i]==arr[j]){ //如果前者等于后者,splice方法删除后者 arr.splice(j,1); j--; } } } return arr; } var arr = [1,1,2,5,6,3,5,5,6,8,9,8]; console.log(newArr(arr)) // [1, 2, 5, 6, 3, 8, 9]
- 建新数组,利用indexOf去重:此方法也是es5中比较简单的方法之一,基本思路是新建一个数组,原数组遍历传入新数组,判断值是否存在,值不存在就加入该新数组中;值得一提的是,方法“indexOf”是es5的方法,IE8以下不支持。话不多说,上代码:
function newArr(array){ //一个新的数组 var arrs = []; //遍历当前数组 for(var i = 0; i < array.length; i++){ //如果临时数组里没有当前数组的当前值,则把当前值push到新数组里面 if (arrs.indexOf(array[i]) == -1){ arrs.push(array[i]) }; } return arrs; } var arr = [1,1,2,5,5,6,8,9,8]; var arrs = newArr(arr) console.log(arrs) //[1, 2, 5, 6, 8, 9]
- ES6中利用Set去重
function newArr(arr){ return Array.from(new Set(arr)) } var arr = [1,1,2,9,6,9,6,3,1,4,5]; var arrs = newArr(arr) console.log(arrs) //[1, 2, 9, 6, 3, 4, 5]