常见的几种数组去重的方法,总有一种适合你~
又到了一年一度的换工作的旺季,今天在这里整理了几种常见的数组去重的方法,希望能对求职或者工作中的你提供一点帮助~~
方法1:是代码量看起来最少最简洁的方法了,利用ES6的set方法来实现的。
function unique1(arr) { return Array.from(new Set(arr)) }
方法2: 双层for循环,利用slice方法截取重复的部分。
function unique2(arr) { for(var i=0; i<arr.length;i++) { for( var j=i+1; j<arr.length;j++) { if(arr[i] == arr[j]) { arr.splice(j, 1); j--; } } } return arr; }
方法3:利用indexOf去重
function unique3(arr) { if( !Array.isArray(arr)) { return 'type error'; } var newArr = []; for(var i =0; i<arr.length; i++) { if(newArr.indexOf(arr[i]) === -1) { newArr.push(arr[i]) } } return newArr; }
方法4: 先利用sort方法,对每个元素按照字符编码顺序进行排序,再比对前后是否重复
function unique4(arr) { if(!Array.isArray(arr)) { return 'type error'; } arr = arr.sort(); let newArr = [arr[0]]; for( var i = 1; i<arr.length;i++) { if( arr[i] !== arr[i-1]) { newArr.push(arr[i]); } } return newArr; }
方法5: 利用对象属性不能重复的特点巧妙对数组进行去重
function unique5(arr) { if(!Array.isArray(arr)) { return 'type error'; } let temp = {}, newArr = [], len = arr.length; for( let i = 0;i< len; i++) { if(!temp[arr[i]]) { temp[arr[i]] = 'aa'; newArr.push(arr[i]); } } return newArr; }
方法6: 最后一种利用reduce方法逼格满满啊~~不熟悉此方法的小伙伴可以先了解下reduce的API。
function unique6(arr) { if(!Array.isArray(arr)) { return 'type error'; } let newArr = arr.reduce((pre, cur) => { if(!pre.includes(cur)) { return pre.concat(cur) } else { return pre } }, []) return newArr; }