Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.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 对象、数组和$.each()_Javascript_Jquery_Arrays - Fatal编程技术网

Javascript 对象、数组和$.each()

Javascript 对象、数组和$.each(),javascript,jquery,arrays,Javascript,Jquery,Arrays,我以为我用arr建议的for var键解决了我的问题,但这在IE中造成了麻烦。现在我又回到了原点 var myVariable = []; myVariable['option-1'] = 'something'; myVariable['option-2'] = 'something else'; $.each(myVariable, function(index, value) { alert(index + ': ' + value); }); 它不起作用。什么也看不出来。有人可以

我以为我用arr建议的for var键解决了我的问题,但这在IE中造成了麻烦。现在我又回到了原点

var myVariable = [];

myVariable['option-1'] = 'something';
myVariable['option-2'] = 'something else';
$.each(myVariable, function(index, value) {
  alert(index + ': ' + value);
});
它不起作用。什么也看不出来。有人可以编辑它使其工作吗?

不需要jQuery。 只需将for..in循环与对象{}而不是数组[]一起使用即可:


只需使用对象而不是数组:

var myVariable = {};
更改var myVariable=[];到var myVariable={}

您正在使用的语法,myVariable['option-1']='something';用于对象,而不是数组。

myVariable是数组。要向数组中添加内容,请使用myVariable.push'something'。您使用的是方括号语法,这是通常向对象添加属性的方式

由于数组是对象,您仍然可以访问选项1,但它不是数组的成员,而是对象的属性:myVariable['option-1'];//某物

解决方案是将myVariable设置为对象。jQuery的每个方法都将按预期迭代对象的属性。

相反,请使用对象文字:


数组方法不支持命名属性。使用对象{}而不是数组[]和用于。。。在Loop中,当代码在两个浏览器FF和Chrome中都能很好地工作,而在另一个IE中却完全不能工作时,这是令人困惑的。根据您所建议的更改,即使是IE似乎也能理解我的代码。tnx有趣的是,您可能遇到了jQuery bug;我会调查的。在任何情况下,如果需要命名键,则应始终使用对象。例如,添加了不存在的元素。如果对象/数组有两个元素myVariable['options-2']=3和myVariable['options-5']=1。然后在IE中,它会有第三个元素myVariable['indexOf'],该值是一个完整的函数。@RST我的IE技能有些生疏。你的意思是IE在Array.prototype上有indexOf作为可枚举属性吗?只有当我们谈论IEWith for…in…{alertkey…}时,才会在FF/Chrome中显示2个警报,在IE中显示3个警报。这是IE8 comp.模式,似乎是IE7
var myVariable = {};
var myVariable = {};
//               ^^

myVariable['option-1'] = 'something';
…