2017-02-11 57 views
0

我在reactjs中訂購我的對象鍵時遇到了問題。 我會從對象創建一個選擇像這樣從我的分貝:Order select Object key in select Reactjs

{ 
    liv_1:value, 
    liv_2:value, 
    liv_3:value, 
    . 
    . 
    . 
    liv_10:value, 
    liv_11:value 
} 

所以我在我的組件:

var selectLevel = 
     <select ref="level"> 
      <option value="" disabled>--Select level--</option> 
      { 
       Object.keys(objectLevel).map(function(el, k) { 
        return <option key={k} 
        value={el}>{el}</option>; 
       }) 
      } 
     </select> 

但我的問題是訂貨,東陽它重新排序像我的鑰匙:

{ 
liv_1:value, 
liv_10:value, 
liv_11:value, 
liv_2:value, 
liv_3:value, 
. 
. 
. 
} 

如何維護訂單?

回答

0

您可以使用自定義的比較像重新排列物品:

Object.keys(objectLevel) 
    .sort((a,b) => +a.split('_')[1] - +b.split('_')[1]) 
    .map(function(el, k) { 
     return <option key={k} value={el}>{el}</option>; 
    }) 
+0

是的,謝謝你!!但爲什麼它自動重新排序? – LorenzoBerti

+0

嘗試檢查你的服務器的響應,你的項目的順序是什麼? – Freez

+0

隨着檢查元素是錯誤的順序,但在後端我發送數據按正確的順序。 – LorenzoBerti

1

映射之前添加的sort的電話:

Object.keys(objectLevel).sort().map(function(el, k) { 
        return (<option key={k} 
        value={el}>{el}</option>); 
       }) 
+0

你好三江源,但它不工作,我相信,問題是從後端返回的對象 – LorenzoBerti

+0

順便說一句,您的代碼可以更優雅:Object.keys(objectLevel) .sort()。map((el,k)=>)' –

+0

@LorenzoBerti:將re (')'..我更新了相應的答案 –