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('')