数组去重即去掉数组中重复的元素,是web前端工做者在面试过程当中和工做中常常会遇到的一个问题,相信通常的方法你们都会,只不过会存在效率差别问题,下面我就来讲说咱们经常使用的几种数组去重的方法!javascript
方法1,思路:经过双重循环,每次检测新数组里面是否有该元素,没有就加进去,改方法思路简单,但当数组长度较长时,会很是影响性能!(不推荐使用)
function deleteRepeat1(arr) { var newArr = []; for (var i = 0; i < arr.length; i++) { let has = false; for (let j = 0; j < newArr.length; j++) { if (arr[i] === newArr[j]) { has = true; } } if (!has) { newArr.push(arr[i]); } } return newArr; }
方法2,思路:先将数组元素进行排序,而后进行循环,将每一项与新数组的最后一项进行比较,若是不相等就添加进去,由于是通过排序的,因此只用和最后一项进行比较(由于这个结果会致使数组的顺序改变,因此也不推荐使用);前端
function deleteRepeat2(arr) { let arr2 = arr.sort(function (a, b) { return a - b; }); let newArr = [arr2[0]]; for (var i = 0; i < arr2.length; i++) { if (arr2[i] !== newArr[newArr.length - 1]) { newArr.push(arr2[i]) } } return newArr }
方法3,思路:利用对象的特性来判断新数组中是否已经有该值(推荐使用)java
function deleteRepeat3(arr) { let obj = {}, newArr = []; for (let i = 0; i < arr.length; i++) { if (!obj[arr[i]]) { newArr.push(arr[i]); obj[arr[i]] = 1; } } return newArr; }
方法4,思路:循环遍历每一项,而后判断每一项的值在数组中的位置是否为当前循环的index,若是不是,则表明不是第一次出现(推荐使用);web
function deleteRepeat4(arr) { let newArr = []; for (let i = 0; i < arr.length; i++) { if (i == arr.indexOf(arr[i])) { newArr.push(arr[i]) } } return newArr; }
以上就是我总结的四种数组去重的方法,用户能够根据实际业务需求进行选择使用!面试