简体   繁体   English

为什么parseJSON将我的JavaScript对象包装在一个新对象中?

[英]Why does parseJSON wrap my JavaScript object in a new object?

Consider this JavaScript object wrapped as JSON: 考虑将此JavaScript对象包装为JSON:

vars = $.parseJSON('{"timestamp":1402720347,"AktiveSprak":{"en":{"ID":"en","Norsk_navn":"Engelsk","Lokalt_navn":"English","Bilde":"flagg_en.png","Aktivt":"1"},"no":{"ID":"no","Norsk_navn":"Norsk","Lokalt_navn":"Norsk","Bilde":"flagg_no.png","Aktivt":"1"}}}')

I want to iterate over the object AktiveSprak, but I can't figure out how. 我想遍历对象AktiveSprak,但是我不知道怎么做。

Now I can do vars.AktiveSprak but in order to use jQuery's .each function the object needs to be wrapped in jQuery like this $(vars) . 现在我可以做vars.AktiveSprak但是为了使用jQuery的.each函数,对象需要像$(vars)这样包装在jQuery中。 Now, why can't I do any of these: 现在,为什么我不能执行以下任何操作:

$(vars).AktiveSprak.each(function(){})
$(vars)[0].AktiveSprak.each(function(){})
$(vars).find("AktiveSprak").each(function(){})
$(vars)[0].find("AktiveSprak").each(function(){})

$(object).each can only be called on jquery objects to use with normal objects : $(object).each只能在jquery对象$(object).each用以与普通对象一起使用:

$.each(vars.AktiveSprak,function(index,item){});

http://api.jquery.com/jquery.each/ http://api.jquery.com/jquery.each/

The $.each() function is not the same as $(selector).each(), which is used to iterate, exclusively, over a jQuery object. $ .each()函数与$(selector).each()不同,后者仅用于遍历jQuery对象。 The $.each() function can be used to iterate over any collection, whether it is an object or an array. $ .each()函数可用于遍历任何集合,无论它是对象还是数组。

Even when using jQuery, not every iteration must be performed with $.each . 即使使用jQuery,也不是每次迭代都必须使用$.each来执行。 In this case, better use JavaScript's built-in in iterator 在这种情况下,更好地使用JavaScript的内置in迭代器

var s = $.parseJSON('{"timestamp":..., "AktiveSprak":{ "de":..., "no":... }}');
for (var lang in s.AktiveSprak) { 
  console.log( lang ); 
  }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM