• 根据当前数组产生一个去除重复元素后的新数组
    • 如: [2, 3, 2, 7, 6, 7] ==> [2, 3, 7, 6]

    • 方法1: 利用forEach()和indexOf()

      • 说明: 本质是双重遍历, 效率差些
    • 方法2: 利用forEach() + 对象容器
      • 说明: 只需一重遍历, 效率高些
    • 方法3: 利用ES6语法: from + Set 或者 … + Set
      • 说明: 编码简洁
    1. /*
    2. 方法1: 利用forEach()和indexOf()
    3. 说明: 本质是双重遍历, 效率差些
    4. */
    5. export function unique1 (array) {
    6. const arr = []
    7. array.forEach(item => {
    8. if (arr.indexOf(item) === -1) {
    9. arr.push(item)
    10. }
    11. })
    12. return arr
    13. }
    14. /*
    15. 方法2: 利用forEach() + 对象容器
    16. 说明: 只需一重遍历, 效率高些
    17. */
    18. export function unique2 (array) {
    19. const arr = []
    20. const obj = {}
    21. array.forEach(item => {
    22. if (!obj.hasOwnProperty(item)) {
    23. obj[item] = true
    24. arr.push(item)
    25. }
    26. })
    27. return arr
    28. }
    29. /*
    30. 方法3: 利用ES6语法
    31. 1). from + Set
    32. 2). ... + Set
    33. 说明: 编码简洁
    34. */
    35. export function unique3 (array) {
    36. // return Array.from(new Set(array))
    37. return [...new Set(array)]
    38. }