Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.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 在数组中循环时的原型对象?_Javascript_Jquery_Arrays_Prototype - Fatal编程技术网

Javascript 在数组中循环时的原型对象?

Javascript 在数组中循环时的原型对象?,javascript,jquery,arrays,prototype,Javascript,Jquery,Arrays,Prototype,在数组中循环时,我会得到令人困惑的结果 填充数组看起来像 var tables = []; // ... // t is table as jQuery object tables[t.attr('id')] = t; 稍后,当循环表数组时,我得到的元素比实际添加的多一个。当另一个对象到达t.removeClass()时,程序中断 Visual Studio调试器将另一个对象描述为“克隆”,这是原型对象/属性(?)的第一个方法 我已经读到,每个javascript对象都有一个prototype

在数组中循环时,我会得到令人困惑的结果

填充数组看起来像

var tables = [];
// ...
// t is table as jQuery object
tables[t.attr('id')] = t;
稍后,当循环表数组时,我得到的元素比实际添加的多一个。当另一个对象到达t.removeClass()时,程序中断

Visual Studio调试器将另一个对象描述为“克隆”,这是原型对象/属性(?)的第一个方法


我已经读到,每个javascript对象都有一个prototype属性,但为什么prototype在这里被视为一个对象?

注意:如果您的id不是数字,那么您不需要数组,请看另一个答案

若要在数组上循环,请不要在构造中使用..的
for

使用

或者使用jQuery:

$.each(tables, function(_,t){
    t.removeClass(...);
});

旁注:似乎有人对本机数组类的原型进行了不充分的充实。是的。这样做并使属性可枚举更糟糕。您应该考虑删除或修复所使用的库。

< P>表的声明应该是:

var tables = {};

能否显示填充数组的代码?tables.length为0,因为它是关联数组。tables.forEach也不起作用。@user2558051那么您根本不应该使用数组。请看eggward的答案。看起来OP应该使用对象作为映射,而不是数组。如果您稍微解释一下,就会得到我的+1。因为您要做的是将t.attr('id')关联到您的t对象。数组的行为不是这样的。
for (var i=0; i<tables.length; i++) {
    var t = tables[i];
    t.removeClass(...);
}
tables.forEach(function(t) {
    t.removeClass(...);
});
$.each(tables, function(_,t){
    t.removeClass(...);
});
var tables = {};