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
          }
  • 相关阅读:
    WCF 入门例子
    C#傻瓜日志类
    ajax长链接拉实现
    linux命令备忘
    .Net 并发异步处理总结
    grafana初始化密码(转载)
    Android 调用照相机拍照
    自定义android控件EditText 自定义边框 背景
    JSON 请求的实现过程
    [转]Android开发教程:shape和selector的结合使用
  • 原文地址:https://www.cnblogs.com/doumian/p/12616852.html
Copyright © 2011-2022 走看看