按指定順序給數組排序

實際問題:將一個有記錄選擇順序的下拉複選框 改成不記錄順序的下拉複選框。

出發點:因爲組件已經很龐大了,而且這只是一個特例問題,改組件的代價太大,因此轉換需求,當提交複選框的時候將複選的結果數組根據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"]

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章