迭代json时获得不一致的输出
set_options_list = function(selctelm, json){ $(selctelm).empty(); for ( key in json.array.F_02_0010){ val = json.array.F_02_0010[key] console.log(key, typeof val, val[0], val[1]); }; }
这是我的json数组:
json.array = {F_02_0010 : [{0 : "-------"}, {1:"20億円以上"}, {2:"14億円以上20億円未満"}, {3:"7億円以上14億円未満"}, {4:"7000万円以上7億円未満"}, {5:"7000万円未満"}], F_02_0110 : [{0 : "-------"}, {1:"10億円以上"}, {2:"7億円以上10億円未満"}, {3:"4億円以上7億円未満"}, {4:"4000万円以上4億円未満"}, {5:"4000万円未満"}], F_02_0210 :[{0 : "-------"}, {1:"10億円以上"}, {2:"7億円以上10億円未満"}, {3:"4億円以上7億円未満"}, {4:"5000万円以上4億円未満"}, {5:"5000万円未満"}], "default": [{0 : "-------"}] };
我undefined
访问密钥和值。可能是什么原因? 这是console.log结果:
0 object ------- undefined 1 object undefined 20億円以上2 object undefined undefined 3 object undefined undefined 4 object undefined undefined 5 object undefined undefined
我不知道为什么我在这里得到不确定?
说得通:
json.array.F_02_0010 [0]是{0:“——-”},
json.array.F_02_0010 [1]是{1:“20亿円以上”},
json.array.F_02_0010 [2]是{2:“14亿円以上20亿円未満”},
等等…
所以:
json.array.F_02_0010 [0] [i]是“——-”如果i == 0,否则为undefined
如果i == 1,则json.array.F_02_0010 [1] [i]为“20亿円以上”,否则为undefined
如果i == 2,则json.array.F_02_0010 [2] [i]为“14亿円以上20亿円未満”,否则为undefined
等等…
你可能想要这样:
json.array = {F_02_0010 : ["-------", "20億円以上", "14億円以上20億円未満", "7億円以上14億円未満", "7000万円以上7億円未満", "7000万円未満"], F_02_0110 : ["-------", "10億円以上", "7億円以上10億円未満", "4億円以上7億円未満", "4000万円以上4億円未満", "4000万円未満"], F_02_0210 :["-------", "10億円以上", "7億円以上10億円未満", "4億円以上7億円未満", "5000万円以上4億円未満", "5000万円未満"], "default": ["-------"] };
或者这样:
json.array = {F_02_0010 : {0 : "-------", 1:"20億円以上", 2:"14億円以上20億円未満", 3:"7億円以上14億円未満", 4:"7000万円以上7億円未満", 5:"7000万円未満"}, F_02_0110 : {0 : "-------", 1:"10億円以上", 2:"7億円以上10億円未満", 3:"4億円以上7億円未満", 4:"4000万円以上4億円未満", 5:"4000万円未満"}, F_02_0210 : {0 : "-------", 1:"10億円以上", 2:"7億円以上10億円未満", 3:"4億円以上7億円未満", 4:"5000万円以上4億円未満", 5:"5000万円未満"}, "default": {0 : "-------" } };
F_02_0010
属性包含一个对象数组,必须使用传统的for语法进行迭代。 在每次迭代期间,抓取对象然后遍历其单个键:
set_options_list = function(selctelm, json){ $(selctelm).empty(); for (var i =0; json.array.F_02_0010.length; i++){ var val = json.array.F_02_0010[i]; for(key in val){ console.log(val[key]); } }; }