根據多選下拉框選中的結果,迴圈輸出選中的標籤<el-cascader>;物件陣列由二維變成一維
阿新 • • 發佈:2020-08-14
下面的圖是要實現的互動圖,根據<el-cascader>中v-model繫結的資料,再去下拉框出書資料中進行比對輸出
v-model繫結的資料是一個二維陣列,是這樣的一組資料
[[1,12],[1,24]]
而下拉框的初始資料也是一個物件陣列,類似於這樣的一個結構
[{ "id": 1, "label": "電視媒體", "children": [{ "id": 43, "label": "教育科技" }, { "id": 44, "label": "公共新聞" }, {"id": 45, "label": "民生休閒" }, { "id": 46, "label": "錢江都市" }, { "id": 47, "label": "浙江經視" }] }, { "id": 2, "label": "電臺媒體", "children": [{ "id": 6, "label": "FM99.6民生廣播" }, { "id": 7, "label": "FM88浙江之聲" }, {"id": 48, "label": "FM107私家車廣播" }, { "id": 49, "label": "FM95經濟廣播" }, { "id": 50, "label": "FM96.8音樂調頻" }, { "id": 51, "label": "FM93交通之聲" }] }, { "id": 3, "label": "報紙媒體", "children": [{ "id": 10, "label": "錢江晚報" }, {"id": 11, "label": "市場導報" }, { "id": 52, "label": "浙江日報" }] }, { "id": 4, "label": "城市媒體", "children": [{ "id": 12, "label": "人民日報欄" }, { "id": 13, "label": "武林廣場巨幔" }, { "id": 53, "label": "公交自行車亭" }] }, { "id": 5, "label": "交通媒體", "children": [{ "id": 14, "label": "蕭山機場燈箱" }, { "id": 15, "label": "火車東站燈箱" }] }, { "id": 54, "label": "校園媒體", "children": [{ "id": 55, "label": "平安浙江" }] }, { "id": 56, "label": "社群媒體" }]
我需要把下拉框的初始資料由二維變成一維,下面是物件陣列由二維變成一維的方法
parseArr(arr, res) { var i = 0; for (i = 0; i < arr.length; i++) { if (arr[i].children && arr[i].children.length > 0) { this.parseArr(arr[i].children, res); var t = JSON.parse(JSON.stringify(arr[i])); delete t.children; res.push(t); } else { res.push(arr[i]); } } }
其中arr是需要轉換的陣列,res是轉換後的陣列,傳入的時候就是一個空物件
下面就是匹配輸出
mediaTypeList() { let arr = [], str = '', arr1 = []; this.form.mediumTypeArray.map(item = > { item.map(ite = > { this.optionList.map(it = > { if (it.id == ite) { arr.push(it.label); } }); }); }); arr.map((item, i) = > { if (2 * i >= arr.length) { return; } str = arr[2 * i] + '/' + arr[2 * i + 1]; arr1.push({ label: str }); console.log(arr1, 'arr1'); }); return arr1; }
輸出的樣式就是這樣的