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