zoukankan      html  css  js  c++  java
  • 数组去重

    我也是最近复习 上代码把

    第一种方法: 循环遍历每一个对象 通过indexOf判断新数组有没有这个值,没有就加入 然后返回这个心数组

    let arr = [1, 3, 4, 5, 6, 7, 1, 2, 3, 4, 3, 2, 2, 3, 1]
          let newArr = []
          arr.forEach((item, i) => {
            if(newArr.indexOf(item) === -1) {
              newArr.push(item)
            }
            return newArr
          })
    这里也可以延伸出includes()
    let arr = [1, 3, 4, 5, 6, 7, 1, 2, 3, 4, 3, 2, 2, 3, 1,2]
          let newArr = []
          arr.forEach(item => {
            if(!newArr.includes(item)) {
              newArr.push(item)
            }
          })
     

    第二种方法: 不新建数组 在原数组上进行操作,因为这个里边会有数组塌陷问题,所以在第二层循环J--

    
    
          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--
              }
            }
          }
    在性能上可以将 变量 = arr,length 这样循环的时候更好

    第三种方法:利用对象

    let arr = [1, 3, 4, 5, 6, 7, 1, 2, 3, 4, 3, 2, 2, 3, 1,2]
          let obj = {},
              newArr = []
          for (let i = 0, num = arr.length; i < num; i++) {
            if(!obj[arr[i]]) {
              obj[arr[i]] = 'asd'
              newArr.push(arr[i])
            }
          }
    Array.prototype.unique = function() {
            let temp = {},
                arr = [],
                len = this.length
            for (var i = 0; i < len; i++) {
              if(!temp[this[i]]) {
                temp[this[i]] = this[i]
                arr.push(this[i])
              }
            }
            return arr
          }
  • 相关阅读:
    多级弹出菜单jQuery插件ZoneMenu
    jquery投色子动画
    推荐一个内容滚动jquery插件
    足球宝贝来了,任你旋转(CSS3)
    jQuery切换网页皮肤保存到Cookie实例
    程序员用HTML5给女朋友制作的3D相册
    jquery模拟LCD 时钟
    jQuery刮彩票兑奖效果
    滚动变色的文字js特效
    jQuery实现右上角点击后滑下来的竖向菜单
  • 原文地址:https://www.cnblogs.com/doumian/p/12616852.html
Copyright © 2011-2022 走看看