2017-10-14 61 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); 
} 
相关问题