我有一个JSON编码的AJAX对象数组,我需要迭代每一个。我是jQuery和JS的新手,并且不确定如何做到这一点。我需要将数字作为选项值,将字符串名称作为对象名称。
AJAX对象(请注意,虽然在此示例中数字按顺序排列可能不是因为整数是来自数据库的auto_id,数字可能会被跳过或出现乱序:
{"data":["1","chicken","2","beef","3","fish","4","pork","5","turkey","6","lamb","7","vennison","8","duck"],"error":false}
我尝试了下面的代码,但不起作用。我试图搜索这个答案,但无法找到它。 TIA。目前,newOption正在返回" undefined"。
$.each(data.data, function(i,s){
var count=s[i];
var newOption = s[i+1];
output += '<option value="' + count + '">' + newOption + '</option>';
i++;
});
答案 0 :(得分:2)
使用for
循环,但每个循环增加2个计数器:
var data = {"data":["1","chicken","2","beef","3","fish","4","pork","5","turkey","6","lamb","7","vennison","8","duck"],"error":false}
var output = '';
for(i = 0; i < data.data.length; i+=2) {
output += '<option value="' + data.data[i] + '">' + data.data[i+1] + '</option>';
}
答案 1 :(得分:1)
您可以使用带模数的if
语句吗?然后在循环外初始化count
。
var count = 0;
$.each(data.data, function(i,element){
if (i % 2 == 0) {
count++;
output += '<option value="' + count + '">' + element + '</option>';
}
i++;
});
答案 2 :(得分:1)
使用jQuery.each迭代数组时,第一个参数是索引,第二个参数是索引本身的值。
而不是使用jQuery使用普通的javascript。
尝试以下方法:
var d = data.data;
var output = "";
for (var i = 0 ; i< d.length; i=i+2) {
var count = d[i];
var newOption = d[i+1];
output += "<option value='"+count+"'>"+newOption+"</option>";
}