最新手的写法

    1. let array = [1,5,2,3,4,2,3,1,3,4]
    2. let i, j;
    3. let unique = (arr) => {
    4. let array2 = arr
    5. for(i = 0; i < array2.length; i++){
    6. for(j = i + 1; j < array2.length; j++){
    7. if(array2[i] === array2[j]){
    8. //踩坑:移除数组需要知道,如果使用delete来移除数组的某个元素,只会移除这个元素的下标,没有去除元素,length也就没有变化。
    9. array2.splice(j,1)
    10. //踩坑:每当删除一个元素时,length都会-1一次,可能会影响下标为j的元素与后面的比较,网上称这种情况为:数组塌陷
    11. j--
    12. }
    13. }
    14. }
    15. return array2;
    16. }
    17. unique(array)

    缺点:如果array很长,很容易造成内存常驻,占用不必要的内存空间。

    使用set

    1. let array = [1,5,2,3,4,2,3,1,3,4]
    2. function unique(arr){
    3. return Array.from(new Set(arr))
    4. }
    5. unique(array)

    缺点:API 太新,旧浏览器不支持。

    【参考资料】 7种方法实现数组去重 Map and Set(映射和集合)