JS数组去重(声明一个数组,元素在1-10之间随机选择一个数,往数组中添加10000个元素)

发布于:2022-12-24 ⋅ 阅读:(427) ⋅ 点赞:(0)

目录

    1.数组排序+for循环

    2.for in遍历对象

    3.indexOf 数组索引

    4.set


声明一个空的数组,利用循环和数组元素添加的方式将10000个随机的1-10的元素添加到数组当中

 var arr = []
        for (var i = 1; i <= 10000; i++) {
            arr.push(Math.ceil(Math.random() * 10))
        }

1.数组排序+for循环

  • 思路:将数组里的元素进行升序排列,然后再利用for循环遍历数组中所有元素,最后用if判断当前元素与后一个元素是否相同,相同则删除该元素
 arr.sort((a, b) => a - b)
        for (var j = 0; j < arr.length; j++) {
            if (arr[j] == arr[j + 1]) {
                arr.splice(j, 1)
                j--
            }
        }
        console.log(arr) 

既然想到了用循环进行元素对比,那么使用递归也是可以实现的

 function fn() {
            arr.sort((a, b) => a - b)
            for (var j = 0; j < arr.length; j++) {
                if (arr[j] == arr[j + 1]) {
                    arr.splice(j, 1)
                    fn()
                }
            }
            return arr
        }
        console.log(fn()) 

2.for in遍历对象

  • 思路:创建一个空对象,遍历数组,将其动态的往对象中添加属性名,再把属性名取出来放入到一个新的数组当中
var obj = {}
        for (var i = 0; i < arr.length; i++) {
            obj[arr[i]] = 'abc'  //动态的往obj中添加属性名 属性值为abc
        }
        var newArr = []
        for (var k in obj) {
            newArr.push(k * 1)
        }
        console.log(newArr)

3.indexOf 数组索引

  • 思路:创建一个新的数组,利用循环将原数组中的元素添加到新的数组当中,期间利用if判断,若新数组中不存在该元素则将其加入到新数组中
var newArr = []
        for (var i = 0; i < arr.length; i++) {
            if (newArr.indexOf(arr[i]) == -1) {
                newArr.push(arr[i])
            }
        }
        console.log(newArr)

4.set

  • set : 值的集合。特点:不能包含重复的元素
  • 思路:将数组加入到set集合中
var set = new Set()
        for (var i = 0; i < arr.length; i++) {
            set.add(arr[i])
        }
        var newArr = new Array(...set) // ...扩展运算符
        console.log(newArr)
        //简写  console.log([...new Set(arr)])

扩展:有兴趣的小伙伴可以利用console.time()和console.timeEnd()分别统计这几种方法的耗时,总结出耗时最短的方法

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到