Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.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以相同顺序解析json_Javascript_Jquery_Json - Fatal编程技术网

javascript/jquery以相同顺序解析json

javascript/jquery以相同顺序解析json,javascript,jquery,json,Javascript,Jquery,Json,我有以下json对象 var json1 = {"00" : "00", "15" : "15", "30" : "30", "45" : "45"}; 我正在准备一个select元素来解析上面的json,如下所示 var selElem = $('<select>', {'name' : name, 'grp' : grp}); for(key in json1) selElem.append($('<option>', {value:key, text: j

我有以下json对象

var json1 = {"00" : "00", "15" : "15", "30" : "30", "45" : "45"};
我正在准备一个select元素来解析上面的json,如下所示

var selElem = $('<select>', {'name' : name, 'grp' : grp});
for(key in json1)
    selElem.append($('<option>', {value:key, text: json1 [key]}));
<select>
    <option value="15">15</option>
    <option value="30">30</option>
    <option value="45">45</option>
    <option value="00">00</option>
</select>
var sellem=$(“”,{'name':name,'grp':grp});
for(输入json1)
append($('',{value:key,text:json1[key]}));
但是创建的select元素如下所示

var selElem = $('<select>', {'name' : name, 'grp' : grp});
for(key in json1)
    selElem.append($('<option>', {value:key, text: json1 [key]}));
<select>
    <option value="15">15</option>
    <option value="30">30</option>
    <option value="45">45</option>
    <option value="00">00</option>
</select>

15
30
45
00
这里的问题是json1对象包含00作为第一个元素,但在select元素中它是最后创建的


此问题的任何解决方法或解决方案。

如果要保留顺序,请使用数组:

var json1 = [{val:"00",txt:"00"}, 
             {val:"15",txt:"15"}, 
             {val:"30",txt:"30"}, 
             {val:"45",txt:"45"}];
然后循环它:

var selElem = $('<select>', {'name' : name, 'grp' : grp});
for(var i=0;i<json1.length;(i+=1)){
    selElem.append($('<option>', {value:json1[i].val, text: json1[i].txt})); 
}
var sellem=$(“”,{'name':name,'grp':grp});

对于(var i=0;iworkaround yes,solution,no,JSON不保证顺序表示对象是一组无序的名称/值对。
您的解决方案很好…但是
json1[i].val
json1[i].txt
返回的是未定义的…您可能没有更新json源代码,从根本上说,这就是问题所在…对象属性enemeration不是NEC,因为属性是第一个defined@Sandeep:在我的答案中添加了一个JSFIDLE链接