Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在jQuery中迭代HashMap列表_Javascript_Jquery - Fatal编程技术网

Javascript 如何在jQuery中迭代HashMap列表

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"}

我有一个需求,在这个需求中,我从数据库查询中收到一个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"}
]
我必须在下拉列表中显示它,如:

"<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);