Javascript 如何在jQuery中迭代HashMap列表
我有一个需求,在这个需求中,我从数据库查询中收到一个HashMap列表,并且我必须在JSP上显示它 JSON对象如下所示:Javascript 如何在jQuery中迭代HashMap列表,javascript,jquery,Javascript,Jquery,我有一个需求,在这个需求中,我从数据库查询中收到一个HashMap列表,并且我必须在JSP上显示它 JSON对象如下所示: [ {"UNIT_NM":"ATLANTA", "UNIT_CD":"A00"}, {"UNIT_NM":"ATLANTA CKO","UNIT_CD":"A00"}, {"UNIT_NM":"DALLAS", "UNIT_CD":"D00"}, {"UNIT_NM":"DALLAS CKO", "UNIT_CD":"D00"}
[
{"UNIT_NM":"ATLANTA", "UNIT_CD":"A00"},
{"UNIT_NM":"ATLANTA CKO","UNIT_CD":"A00"},
{"UNIT_NM":"DALLAS", "UNIT_CD":"D00"},
{"UNIT_NM":"DALLAS CKO", "UNIT_CD":"D00"}
]
我必须在下拉列表中显示它,如:
"<option value='A00'> A00 ATLANTA</option>";
"<option value='A00'> A00 ATLANTA CKO</option>";
"<option value='D00'> D00 DALLAS</option>";
"<option value='D00'> D00 DALLAS CKO</option>";
有什么建议吗 每个回调函数有两个参数:1是数组元素的索引,2是数组元素。所以key是0,1,2,等等,value是这个索引位置的js对象。所以你需要做:
$.each(data, function(key, obj) {
var str = obj["UNIT_CD"];
listItems+= "<option value='" + str + "'>" + str + " " + obj["UNIT_NM"] + "</option>";
});
PS:如果您使用console.logvalue,您可以自己做 为了使它更加模块化,并减少HTML的使用,以下是我的看法:
var data = [
{
"UNIT_NM": "ATLANTA",
"UNIT_CD": "A00"
},
{
"UNIT_NM": "ATLANTA CKO",
"UNIT_CD": "A00"
},
{
"UNIT_NM": "DALLAS",
"UNIT_CD": "D00"
},
{
"UNIT_NM": "DALLAS CKO",
"UNIT_CD": "D00"
}
];
//init first option
var $option = $("<option/>", {
"value": '',
"html": "Please Select"
});
//add that to an array
var options = [$option];
//iterate over data
$.each(data, function (key, value) {
// value now contains a row eg., when key = 0, value = { "UNIT_NM": "ATLANTA", "UNIT_CD": "A00" }
//clone the default option, change the value and the HTML, then push into options array
options.push($option.clone().val(value.UNIT_CD).html(value.UNIT_CD + " " + value.UNIT_NM));
});
//add that array into select
$("#manualCsoCodes").html(options);
其思想是创建一个选项数组,用标记名选项填充jQuery对象,然后将其放置在选择标记中。这里有一个
哦,在我忘记之前,每一个都按行进行迭代。因此,在每次迭代中,您将获得一行数据。比如说,
如果key==2,那么value=={
单位:达拉斯,
单位:D00
}
因此,要访问UNIT\u NM和UNIT\u CD,必须分别使用value.UNIT\u NM和value.UNIT\u CD。有关每种方法的详细信息,请参阅
希望有帮助 非常感谢……你救了我一天@塔拉雷斯:那你至少可以投上一票:-谢谢!虫族在你面前回答,但我还是接受你的回答,因为你的描述很好。@jarrod为什么投反对票?!?在我的问题中,我已经清楚地提到了需要什么,我写了什么代码,输出了什么。谁说我投了反对票?@JarrodRoberson对不起……我还以为你也投了反对票呢!不知道为什么我在这个问题上投了两张反对票。有什么问题吗
$.each(data, function(key, obj) {
var str = obj["UNIT_CD"];
listItems+= "<option value='" + str + "'>" + str + " " + obj["UNIT_NM"] + "</option>";
});
listItems+= "<option value='" + value.UNIT_CD + "'>" + value.UNIT_CD + " " + value.UNIT_NM + "</option>";
var data = [
{
"UNIT_NM": "ATLANTA",
"UNIT_CD": "A00"
},
{
"UNIT_NM": "ATLANTA CKO",
"UNIT_CD": "A00"
},
{
"UNIT_NM": "DALLAS",
"UNIT_CD": "D00"
},
{
"UNIT_NM": "DALLAS CKO",
"UNIT_CD": "D00"
}
];
//init first option
var $option = $("<option/>", {
"value": '',
"html": "Please Select"
});
//add that to an array
var options = [$option];
//iterate over data
$.each(data, function (key, value) {
// value now contains a row eg., when key = 0, value = { "UNIT_NM": "ATLANTA", "UNIT_CD": "A00" }
//clone the default option, change the value and the HTML, then push into options array
options.push($option.clone().val(value.UNIT_CD).html(value.UNIT_CD + " " + value.UNIT_NM));
});
//add that array into select
$("#manualCsoCodes").html(options);