• 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;
    },
    

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

  • 相关阅读:
    为什么数据库性能监控很重要
    Linux查询日志 打印日志
    Linux 企业级夜莺监控分析工具远程访问
    简单工厂模式
    使用API接口获取商品数据:从入门到实践
    玩转Python:数据可视化,一个很高级的交互式Python库,附代码
    艾美捷ProSci丨ProSci ST2 抗体说明书
    Vue2 零基础入门 Vue2 零基础入门第五天 5.1 动态组件 && 5.2 插槽
    Python学习--with语句
    Three.JS游戏开发入门
  • 原文地址:https://blog.csdn.net/weixin_42678822/article/details/139305360