• 20240529每日前端--------vue数组对象包含数组,判断子数组是否有重复对象


    数组格式如下:

    "industrySceneList": [
        {
            "mainIndustry": 1,
            "mainIndustryName": "林草",
            "sceneList": [
                {
                    "subIndustry": 1,
                    "subIndustryName": "森林防火"
                }
            ]
        },
        {
            "mainIndustry": 2,
            "mainIndustryName": "国土",
            "sceneList": [
                {
                    "subIndustry": 141,
                    "subIndustryName": "其它-1"
                },
                {
                    "subIndustry": 11,
                    "subIndustryName": "耕地保护"
                },
                {
                    "subIndustry": 12,
                    "subIndustryName": "矿山保护"
                }
            ]
        },
        {
            "mainIndustry": 12,
            "mainIndustryName": "其它-2",
            "sceneList": [
                {
                    "subIndustry": 71,
                    "subIndustryName": "其它-3"
                }
            ]
        }
    ],
    

    第一种办法:通过map计数来判定:

    onSubIndustryChange(industrySceneList) {
      let validIndust = true;
      let subIndustry = "";
      // 创建一个Map来存储subIndustry及其出现次数
      const subIndustryCounts = new Map();
    
      // 遍历industrySceneList
      industrySceneList.forEach(industryScene => {
        // 遍历当前场景列表中的sceneList
        industryScene.sceneList.forEach(scene => {
          // 获取当前subIndustryName的计数,如果不存在则默认为0
          const count = subIndustryCounts.get(scene.subIndustryName) || 0;
          // 将计数加1
          subIndustryCounts.set(scene.subIndustryName, count + 1);
        });
      });
    
      // 筛选出计数大于1的subIndustry,即重复的subIndustry
      const duplicates = Array.from(subIndustryCounts)
          .filter(([subIndustry, count]) => count > 1)
          .map(([subIndustry, _]) => subIndustry);
    
      //数组转String用逗号拼接
      subIndustry = duplicates.join(',');
      if (duplicates.length > 0) {
        validIndust = false;
        this.$message({
          message: '当前存在' +subIndustry+'重复,请检查后重试',
          type: 'error'
        });
      }
      return validIndust;
    },
    

    第二种办法:通过ES6 set数据类型

    hasDuplicateIds(value) {
      console.log(value);
      let dupValid = true;
      const nonMinusOneItems = this.industryScenario.filter(item => item.mainIndustry == value);
      const uniqueNonMinusOneIds = new Set(nonMinusOneItems.map(item => item.mainIndustry));
    
      if(nonMinusOneItems.length !== uniqueNonMinusOneIds.size){
        this.$message({
          message: '行业不能重复',
          type: 'error'
        });
        dupValid = false;
      }
      return dupValid;
    },
    

    ---------- 兄弟们更喜欢哪一种呢~

  • 相关阅读:
    【PMI-PMP®模考三】2022
    Python的整数是如何实现
    Milvus 介绍
    微信小程序 - 实现获取手机验证码倒计时 60 秒(手机号+验证码登录功能)
    C++ 封装-构造和析构
    Linux学习-24-Linux用户和用户组管理介绍
    农村当前最大的红利,以及三大赚钱项目
    设计符合REST原则的API可以遵循以下步骤
    论文阅读(4) 游泳水母对被动能量再捕获的广泛利用
    101页4万字XX大数据湖项目建设方案
  • 原文地址:https://blog.csdn.net/weixin_42678822/article/details/139305360