• js数组找重复值


    ### 判断两组数组对象中是否有重复值

    *   第一种:
    let list = [[1,2,3],[1,5,4]];
        let obj = {};
        let msg = ''
        list.forEach((e, index) => {
          for (var key in e) {
            if (!obj[e[key].val]) {
              obj[e[key].val] = true;
            } else {
              return msg = `第${~~index + 1}个第${~~key+1}行重复了`
            }
          }
        })
        return msg

    *   第二种
    let list = this.data.msgList.reduce((acc, val) => acc.concat(val), []);
    if([...new Set(specList.map(item=>item.specDesc))].length < specList.length){
        console.log('有重复')
    }

    ###  数组合并

    obj.push.apply(obj,[])

    ### 小程序 或者 vue 中改变对象值引用
    JSON.parse(JSON.stringify(obj))






    let arr1 = [1, 2, 4, 4, 3, 3, 1, 5, 3];

      求:arr1 数组中重复的值

    思路:定一个空数组用来放相同的值,该数组循环两次,对比!

    //关键代码
    
    for(var j of arr){
      for(var i of arr){
       if(j === i && newArr.indexOf(j) == -1){
       newArr.push(j)  
    }  
    }  
    }
    return newArr
    

      悲剧的是,返回值是没有重复值跟我想的不一样  返回:[1,2,3,4,5]

    修改一下   

    j !== i
    

      返回 [1,2]

    然后看了别人的代码

    let arr = [1, 2, 4, 4, 3, 3, 1, 5, 3];
    function duplicates(arr) {
                var result = [];
                arr.forEach(item => {
              //判断检查数据从头到尾 与 从尾到头 的位置是否 不同 并且 每次判断 新数组里面是否有 当前值的 位置 没有那么 进行下一步 if (arr.indexOf(item) !== arr.lastIndexOf(item) && result.indexOf(item) == -1) { result.push(item); } }) return result //返回 1 3 4 } duplicates(arr)

      唯一的缺点就是复杂度上升

    arr.indexOf(item)
    
    返回  0 1 2 2 4 4 0 7 4
    
    arr.lastIndexOf(item)
    
    返回 6 1 3 3 8 8 6 7 8
    
    
    arr.indexOf(item) !== arr.lastIndexOf(item)
    
    返回 true false true true true true true false true
    

      为true的时候

    出现了 1 4 4 3 3 1  3

    然后 

    result.indexOf(item) == -1)  每次都要跟当前值 做对比 如果有 ,那么就不push 进去
    那么 1 4 不push 3 不push 不push

    最终返回143,第一次做感觉非常难,但是仔细想了之后,明白之后也就这样~~-,-

  • 相关阅读:
    gitlab备份及恢复
    Nginx一:常用命令和配置文件介绍
    SpringTask三:使用SpringBoot
    SpringTask二:注解配置方式
    SpringTask一:xml配置方式
    大坑!maven的web项目初始化错误:sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification ...
    Quartz(5):quartz监听器
    Quartz(4):quartz.properties配置文件介绍
    Quartz(3):simpleTrigger和cronTrigger触发器的介绍
    Quartz(2):JobDetail、JobExectionContext、JobDataMap的介绍
  • 原文地址:https://www.cnblogs.com/damai/p/7744361.html
Copyright © 2020-2023  润新知