2017-10-14 57 views
1

我有一個這樣的對象:如何獲得對象值和id作爲一個選擇框使用的選項JavaScript或jQuery的

var quantites = { 
    4: { 
     93: { 
      "id": "355", 
      "qty": 8 
     } 
    }, 
    5: { 
     93: { 
      "id": "356", 
      "qty": 10 
     } 
    }, 
}; 

我怎樣才能獲得id作爲價值和數量的標籤中的選擇不使用/知道鍵遍歷:

<option value="335">8</option> 
<option value="336">10</option> 

一個DIV:

<div id="qty"> 
    <select></select> 
</div> 

我至今嘗試過的:

  $.each(quantites, function(key, value) { 
      $('#qty') 
       .append($("<option></option>") 
       .attr("value",key) 
       .text(value)); 
      }); 
     }); 
+0

歡迎來到StackOverflow! 你到目前爲止嘗試過什麼嗎? StackOverflow不是一個免費的代碼寫入服務,並且期待你 [嘗試先解決你自己的問題](http://meta.stackoverflow.com/questions/261592)。 請更新您的問題,以顯示您已經嘗試過的內容,顯示您在 [最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)中遇到的具體問題。 欲瞭解更多信息,請參閱 [如何問一個好問題], 並採取 [網站之旅](http:// http:// stackoverflow.com/tour) –

+0

是id和qty總是在第三級? – HMR

回答

3

您可以將數據先轉換爲對象的數組,然後使用forEach循環添加到select

var quantites = {"4":{"93":{"id":"355","qty":8}},"5":{"93":{"id":"356","qty":10}}} 
 

 
var select = $('#qty select') 
 
var data = [].concat(...Object.values(quantites).map(Object.values)) 
 
data.forEach(function(e) { 
 
    select.append(`<option value="${e.id}">${e.qty}</option>`) 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="qty"> 
 
    <select></select> 
 
</div>

+0

這位先生是一個不錯的解決方案,我感謝你! – gold82

+0

不客氣。 –

+0

不錯,我建議的唯一的事情就是不要在循環中追加。你寧願在循環中構造HTML字符串並追加到外部。 – lshettyl

1

如果包含ID和數量的對象(S)一直處於第三級,也沒有其他的對象,你可以將當前對象轉換爲具有ID和數量對象的數組:

var quantites = { 
    4: { 
     93: { 
      "id": "355", 
      "qty": 8 
     } 
    }, 
    5: { 
     93: { 
      "id": "356", 
      "qty": 10 
     } 
    }, 
}; 

var arrayOfQuantities = 
Object.keys(quantites) 
.map(
    key => 
    Object.keys(quantites[key]) 
    .map(subKey => quantites[key][subKey]) 
) 
.reduce((acc,item) => acc.concat(item),[]) 

解決您如何首先獲得如此不可用的對象並解決該問題可能更好。

0

試試這個。

var quantites = { 
    4: { 
     93: { 
      "id": "355", 
      "qty": 8 
     } 
    }, 
    5: { 
     93: { 
      "id": "356", 
      "qty": 10 
     } 
    }, 
}; 
var htmltoAppend; 
for (var key in quantites){ 
    for(var key2 in quantites[key]) 
    htmltoAppend = `<option value="` + quantites[key][key2].id + `">`+ quantites[key][key2].qty +`</option>`; 
    document.getElementById('qty').append(htmltoAppend); 
} 
相關問題