實際問題:將一個有記錄選擇順序的下拉複選框 改成不記錄順序的下拉複選框。
出發點:因爲組件已經很龐大了,而且這只是一個特例問題,改組件的代價太大,因此轉換需求,當提交複選框的時候將複選的結果數組根據options的順序排序。
需求:將一個數組按照另一個數組的順序排序
參照順序數組:
[
{
"label": "",
"value": ""
},
{
"label": "思明區",
"value": "350203"
},
{
"label": "湖裏區",
"value": "350206"
},
{
"label": "海滄區",
"value": "350205"
},
{
"label": "集美區",
"value": "350211"
},
{
"label": "同安區",
"value": "350212"
},
{
"label": "翔安區",
"value": "350213"
}
]
現有數組:
["350211", "350205","350206"]
排序代碼:
toOrderArray(options,selectItems){
let optionValues=options.map(function(a){return a["value"]});
return selectItems.sort(function(a,b){
return optionValues.indexOf(a)-optionValues.indexOf(b);
})
}
結果:
["350206", "350205","350211"]