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

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

  • 相关阅读:
    掌握这些 Spring Boot 启动扩展点,已经超过 90% 的人了!
    pcl基于最小切割的点云分割
    看这家造酒厂如何利用低代码开发框架筑牢数据根基,实现数字化转型
    09-排序3 Insertion or Heap Sort(浙大数据结构)
    uni-admin 利用云数据表自动生成页面
    MySQL 安全相关配置参数
    PAT 1022 Digital Library
    青藏高原连续日光诱导叶绿素荧光数据集(2000-2018)
    一文读懂去中心化无线网络DeWi
    EasyX图形库note4,动画及键盘交互
  • 原文地址:https://blog.csdn.net/weixin_42678822/article/details/139305360