Javascript 对象数组文字的可靠长度

Reliable lengths for a Javascript object array literal?

本文关键字:对象 数组 文字 Javascript      更新时间:2023-09-26

有很多这样的问题,但是...咄......我无法让它工作。 我怎么...取一个对象文字,如下所示:

locations = {};
locations.activities = [
{ text:'biking'},
{ text:'hiking'},
{ text:'boating'},
{ text:'studying'},
{ text:'reading'},
];

并打印出活动数组值?

IE和Firefox的长度不同(分别为6和5(。

谢谢

问题是尾随逗号:出于跨浏览器兼容性的原因将其删除。

导致

不一致的行为是因为某些浏览器在存在尾随逗号时错误地解析文本1。正确的行为是忽略尾随逗号2

如果在数组的末尾省略了一个元素(即 [...,](,则该元素不会增加数组的长度。


1 语法在 IE10 中工作正常,但在 IE9 及更早版本中不正确。这可以通过在相关浏览器模式下从控制台测试[1,].length来验证。报告的值分别为 1(正确(和 2(不正确(。

2 尾随逗号与[,]相关,应等效于 [undefined]

使用 JSON.stringify(locations.activities);

试试这个

locations = {};
locations.activities = [
{ text:'biking'},
{ text:'hiking'},
{ text:'boating'},
{ text:'studying'},
{ text:'reading'},
];

 $.each(locations.activities, function(){
  alert(this.text);
 }); 

JS在这里小提琴 http://jsfiddle.net/mhnHx/