js 对象字典(key vlaue映射)

 
 const snTableData = this.snTableData;
snTableData 结构如下:

 

 现在需要做成字典映射的形式,格式如下:

 

 

前提: calDict就是dyn_cal_group_info_dict,之前逻辑处理了不用关心这个。

      let obj1 = {};
      //遍历对象的key value
      for (let i in snTableData) {
        const calDict = snTableData[i].calDict;//找到每个对象的calDict 属性,该属性是个对象
        const keys = Object.keys(calDict);//遍历出该对象所有的key,返回一个数组形式。
        for (let key of keys) {
          if (obj1[key]) { // 以后每次循环进这里。
    //根据id去重
            const obj1Ids = obj1[key].map((item) => item.id);
            if (obj1Ids.includes(calDict[key].id)) {
              continue;
            }
            obj1[key].push(calDict[key]);
          } else { // 第一次进这里
            obj1[key] = [calDict[key]];
          }
        }
      }
 
打印结果如下:

 

补充:循环生成多个下拉

<el-form-item label="请选择校准组(非必选):">
          <el-select
            v-model="checkList[index]"
            placeholder="请选择校准组"
            v-for="(item, index) in itemT"
            :key="index"
            @change="setCalValue"
            clearable
          >
            <el-option
              v-for="item1 in calDatas[item]"
              :key="item1.id"
              :label="item1.name"
              :value="item1.id"
            >
            </el-option>
          </el-select>
        </el-form-item>

 data数据:

calDatas: {},
checkList: [],

js:

接上面的 逻辑:
this.itemT = Object.keys(obj1);
this.checkList=Array(this.itemT.length).fill('')
 
 
posted @ 2021-10-18 15:18  赵辉Coder  阅读(1164)  评论(0编辑  收藏  举报